From dc051fa9aec6126d894e95edd7c72b03d277b412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=B0=D0=BB=D0=B8=D0=BC=D0=BE=D0=B2=20=D0=A0=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=BC?= Date: Tue, 14 Apr 2026 01:41:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B2=D1=82=D0=BE=D1=80=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F,=20=D0=BD=D0=B5=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=87=D0=B8=D0=B9=20=D1=87=D0=B0=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../8.5/executionHistory/executionHistory.bin | Bin 5196933 -> 5964249 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .../.gradle/8.5/fileHashes/fileHashes.bin | Bin 302769 -> 319478 bytes .../.gradle/8.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.5/fileHashes/resourceHashesCache.bin | Bin 107581 -> 115197 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../buildOutputCleanup/outputFiles.bin | Bin 1161827 -> 1162583 bytes .../data/repository/AuthRepositoryImpl.kt | 14 +++-- .../auth/domain/repository/AuthRepository.kt | 1 + .../auth/presentation/AuthViewModel.kt | 6 ++- .../chats/data/remote/api/ChatApi.kt | 17 +++++- .../chats/data/remote/dto/ChatDtos.kt | 9 +++- .../data/repository/ChatRepositoryImpl.kt | 50 ++++++++++++++---- client-mobile/chats/di/ChatModule.kt | 5 +- .../chats/domain/repository/ChatRepository.kt | 2 + .../chat_detail/ChatDetailScreen.kt | 11 ++-- .../chat_detail/ChatDetailViewModel.kt | 23 ++++++-- .../chat_list/ChatListViewModel.kt | 10 +++- .../chats/presentation/components/ChatItem.kt | 25 ++++++--- .../presentation/components/MessageBubble.kt | 14 ++--- client-mobile/core/security/TokenManager.kt | 14 +++-- client-mobile/navigation/AppNavigation.kt | 8 ++- 22 files changed, 160 insertions(+), 49 deletions(-) diff --git a/client-mobile/.gradle/8.5/executionHistory/executionHistory.bin b/client-mobile/.gradle/8.5/executionHistory/executionHistory.bin index 65ab3f5a786b6d97309dbc4fee627d4936bf0a28..dccdf34f12f5f72f85c9326d479c9bf9788e23c9 100644 GIT binary patch delta 100718 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

5-R1!zvsX$0u#OsMei)q76(NmT4%j7#p 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 BnwS6p delta 24986 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 diff --git a/client-mobile/.gradle/8.5/executionHistory/executionHistory.lock b/client-mobile/.gradle/8.5/executionHistory/executionHistory.lock index 2c694d365cacf78ea10063fdf9eb109609b28205..d48925eab313195ce3a2f215aae9805920863d47 100644 GIT binary patch literal 17 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 delta 39772 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 delta 1005 zcmYk)ZA_JA7zc1JG^A#1(u(Inc}-q259fJ~oWnUJ8W^t$gH8OZAav2fCBYUOU!bnz`q2I1-t%(Z&-K55 z_p^F#!}Z~)tJxYQ!mjzTtm#PCHN2@CxTYIwO;0A}*j!2K!j@=4e}Weki3U0oy(&E^ znQ$<90QM9ebt!Jlq-cmq_2NRRrp8jGdg0j?ytCEB&{j8grD=FStp=-U9yF)>;m9y> zIwKC<8GgK%sjF+5PD0c+KZdrsvH$r26mBoYrR_ddVKLUB)39RNFp+LbG}DS+Q^)US z35sk!EZ9Pr*%886b_?3luf9CC7@-ay-a#wr~9BzY!4;e~(v8O5<`H#qlW{ zmGCb%D&^`OmrR; z!;>YKtm>f?=jb_{?X#)x`l1N)*L4-&|3M_a3dUhRSc6fHFtx&S;E2I;c%s1FlLSJ+qw`#e9NmFZ$zU%d9~^}~Zg`n$uq+pE z@0C52mrKX2;zeGqAnX5ro-KntDV0wJLI>!h^_#T(ypg?g#UW3`qw!%iU#z97K+LO@ zM1jKBNaDxTNz7e!a;*YDu&1b~>u~srw*8@4Dv9ok9 UGQO%OCHOQ;*qFeX4(i|ZFS_!fd;kCd diff --git a/client-mobile/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/client-mobile/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 0fbf02f525657a6f1758e6751b7ac77ef6106ffa..4f5865d4d964338673d252077cc8982f996656b7 100644 GIT binary patch literal 17 VcmZSf+M}~b{lVOB1~3R`1OPFz1YZCE literal 17 VcmZSf+M}~b{lVOB1~3TC2LLi01j_&b diff --git a/client-mobile/.gradle/buildOutputCleanup/outputFiles.bin b/client-mobile/.gradle/buildOutputCleanup/outputFiles.bin index e5582b06f496d1f8c51047e6e8b9fb69475b709f..ffa79b77af4f49f9115253577812de2961ad66a5 100644 GIT binary patch delta 2401 zcmYjRYfx0@8TLKr?CmU^Zx7NJzd*oH;L3Tbtas-TPsQDeVz=_KdJnRC8*FVFKn z&-;Bl;^_Xt;jD)h5ikW;MnHu?0(Q@MJSj~YBR|$NsW>nR<^Y+Ux@>FOHLG^|4DFHd z&?puD&EGcViF(+)08KFvRdN4~9T1 z-usAeu){C$sE04Hkp;0|AKY-yt3^d(@L%}=BUzF4n)~K299oCZamq#h5r7AiFZ1sN z!8EMC%kLgb_Pq1{)cEc+Ew>jZJ?A40Wcl0ObtRu{R!{G)T5JXSZV(11Kp|R7g^YHl#|MeJ(?)V|U;2g2<;S(Cbr`-> zH>@L@Ca?Bi?S5P9UX9`^o!P4E8KX;#rMa(**;tpOyHX0vapwbFw24%_+j!Rd`4?(< zvmK9ruX{937dK{1ZwI|K(QLpYGml z@6f#2v=J}Y8B9F6)p_yD)mL_?sb>H$HyGqOQs;E?5?Zi+q5`3d9<-WL#B@)(){o!o}e}`4*ZmllLNfNuYeHFSlFgt&95g2zQ{&SS25&)8q&+LMD#XiY1|B zeOzI5|I1UgsuwV~Q@jqa(POWa8g7VpIcA~3o8m@^bc|*f+>g^{d!`3d?upkVX`uG^ zXaDuJmR*byPsJP#dOY@-7Mh$Ren%573ND(w$y8O|lIX&W8cPgdWvMBc!>GTT<^#(5pt~HB3 zFzT^S@ROT`Vn(4c4A50!l30@%(+J0ibAsHXUS{4#E7zM=(UwxEqRIajips-!>ai=y zcm2=jr2ra=5LpR^a9B{MwFGOZ`7@53owxkqx&%(+dlKjV!EAm(9)G*{JOfO)Wd5)R9EjCEi^mcFO!ukZg#Aa$+=tJbed3Mqna7@Qr5W3#LI(9XuQr>F z53l>|)02ARp%W|q=%c1Iy@gx*eNx8%#J5%EluMI8fLwGJaBhY9d|-tLrxe;%<>yPQ z{G>pbLYw`hbJF(rsmncIn_(Yrwn?c$Sezx@x6v!~bJCWpxmlgMG^ zY10v)Lr;WWRhX1SDJuqE#-{DkVv)3pk9VwbBx^-4QzmK&?kJPiT49mL-fol0&7)nf zik&LCV7z%k>JZ49`>jO>3$^>PDISm1Nmu>BD=D%a!hpJdG`M6TR8QwBlx1|c zK_zYpw@ARO-AnUxtcNLcdyy)&a|@^)v3@`z3n2v0N0UAqNjV~P+iG0eP&?`DUPB*l zcMwqzeI9$1KkZsWWZx#R0eyo3BSp9SPk6ffzN} zQsGO^rx)L8*?df;c*ce;Gc5sTlHfP@+Q<2Y8gU(V&9l@3lz8kee{Izs>-Q>47R<>= zy~uzw2eMDrhV4MEf<|Vea+j|F>Z~MBW#ms$kxfaIU%ARPz;JriKe?cKGcfP%W%cBZ zWenP6FS38dr%E0xdzaAZkcPrlb0-C zjFa8&CwoN^N^7btKHHOlMukt6Mhbqy^`kw1(?2 JW17zh_dljgR~rBT delta 1818 zcmYjRc}x^n826iNXJ&V2W?4aCRdx$lsnq~BMr}j|R6Nq|B2v!^9(bk!Z!pretr2@d zX?;O!iW?j1(UvX8r!gwF7BzTalSWWW0k1-}E=uAN(Y~EQ=|7X1H}ihi_j_~s$>i(Z zlfBh2I~w9}PBfHpC=Z3vfOF%ZL&SNBFx1L8I>^Qklv()Yc!-_`=~%l1A{=;oANV*p zNpgJVSS0&ld=w<(vYR7TEv6_fW&$FEX zTS=2gi6x=wN*aE4k&SS`NUZ2&cl5`!=d9C&UV)1PW?(a(4Ogrz7Rg-yg`kiKhir1IR=bHUA9AIq!Gmk2^G8HX$>9IyF=Z~#*kC_#PLaov^;6_5tXjoi`Vca4 z+dV!(!V8c1&M~3GcwAceH0L*&NWmz_DGL3vg3~m>dp~c=UvrCt~UuQ4XQ8o*J&jZl8ZeteAgA zDg!qzSSx!ttluc_HIwjn*?aijNAdv$O8hRbM%=69D4ehaQlZM(tUyh%B@>8u6VzA5 z=X5i~TOj%feZ7#lqd|nl*nLpm8b#D&LN@-}Am;(h@w*Nywb$fMhK}H$7CBGBb$8`U z3NCmmXEU(h?^>?2JR}o7HWw3j5?_dcS5*ZJR;+80C=aF3d3>0gAg43f`b1C}ofGdl z%nffq5*~G%ZMM=4Np-kyky*Ato8J{5V(2gL;WA&~xqr1DXQ=pdtO4r2$~BS7snT3B zAwa#fMo85`B~8Rz!T1cjtua~?ao^yIiSwY`fZle+1BMQYa~cfm9y~zIdl_83%ghY= zpRJ%&YM^c<6kuj!7xnjfjmnkv*2_1_; z0}gEYQ8~+zdAm&cIJ#Q#ghH9$wJ9`cA;kcunwm%;S@Id7HQwR3L*Fx*(9Y(UI-6W9jHDxD&YYo2{x9dkQV%~6YI`Nv>J3#fuQ2v zdeJzHY;S=fkgBA;r`O`3JF3-vRHE1dpQck802oN&2kKp=+(~?K-=GRWrz|a>nTCz$ zIVX_f5qxjs$_r>l!P*C<(kQ->=x|$W)VJ5u-$wi}t;~uuZiwX!ZhceB6;Vpnd;lK5 zt1i?ickA8YFzK { return try { val config = api.getConfig() diff --git a/client-mobile/auth/domain/repository/AuthRepository.kt b/client-mobile/auth/domain/repository/AuthRepository.kt index fbf8666..7b5b9b8 100644 --- a/client-mobile/auth/domain/repository/AuthRepository.kt +++ b/client-mobile/auth/domain/repository/AuthRepository.kt @@ -7,4 +7,5 @@ interface AuthRepository { suspend fun register(userName: String, password: String): Result suspend fun logout() suspend fun fetchConfig(): Result + fun isAuthenticated(): Boolean } diff --git a/client-mobile/auth/presentation/AuthViewModel.kt b/client-mobile/auth/presentation/AuthViewModel.kt index 10feb5f..87949ee 100644 --- a/client-mobile/auth/presentation/AuthViewModel.kt +++ b/client-mobile/auth/presentation/AuthViewModel.kt @@ -22,9 +22,13 @@ class AuthViewModel @Inject constructor( private val repository: AuthRepository ) : ViewModel() { - private val _state = MutableStateFlow(AuthState()) + private val _state = MutableStateFlow(AuthState(isAuthenticated = repository.isAuthenticated())) val state: StateFlow = _state.asStateFlow() + fun checkAuth() { + _state.update { it.copy(isAuthenticated = repository.isAuthenticated()) } + } + fun login(userName: String, password: String) { viewModelScope.launch { _state.update { it.copy(isLoading = true, error = null) } diff --git a/client-mobile/chats/data/remote/api/ChatApi.kt b/client-mobile/chats/data/remote/api/ChatApi.kt index af98efd..787a2ee 100644 --- a/client-mobile/chats/data/remote/api/ChatApi.kt +++ b/client-mobile/chats/data/remote/api/ChatApi.kt @@ -4,6 +4,21 @@ import chats.data.remote.dto.ChatDto import chats.data.remote.dto.MessageDto import retrofit2.http.* +data class SendMessageRequest( + val content: String?, + val type: String = "text", + val attachments: List? = null, + val replyToId: String? = null, + val quote: String? = null +) + +data class AttachmentRequest( + val type: String, + val url: String, + val fileName: String, + val fileSize: Long +) + interface ChatApi { @GET("chats") suspend fun getChats(): List @@ -16,7 +31,7 @@ interface ChatApi { ): List @POST("messages/chat/{chatId}") - suspend fun sendMessage(@Path("chatId") chatId: String, @Body content: String): MessageDto + suspend fun sendMessage(@Path("chatId") chatId: String, @Body request: SendMessageRequest): MessageDto @Multipart @POST("messages/upload") diff --git a/client-mobile/chats/data/remote/dto/ChatDtos.kt b/client-mobile/chats/data/remote/dto/ChatDtos.kt index c9fc0f7..5999731 100644 --- a/client-mobile/chats/data/remote/dto/ChatDtos.kt +++ b/client-mobile/chats/data/remote/dto/ChatDtos.kt @@ -31,6 +31,13 @@ data class ChatDto( @SerializedName("id") val id: String, @SerializedName("type") val type: String, @SerializedName("name") val name: String?, + @SerializedName("avatar") val avatar: String?, @SerializedName("unreadCount") val unreadCount: Int, - @SerializedName("messages") val messages: List + @SerializedName("messages") val messages: List = emptyList(), + @SerializedName("members") val members: List = emptyList() +) + +data class ChatMemberDto( + @SerializedName("userId") val userId: String, + @SerializedName("user") val user: UserBasicDto? ) diff --git a/client-mobile/chats/data/repository/ChatRepositoryImpl.kt b/client-mobile/chats/data/repository/ChatRepositoryImpl.kt index c2e6574..1df55e0 100644 --- a/client-mobile/chats/data/repository/ChatRepositoryImpl.kt +++ b/client-mobile/chats/data/repository/ChatRepositoryImpl.kt @@ -1,20 +1,27 @@ package chats.data.repository import chats.data.remote.api.ChatApi +import chats.data.remote.api.SendMessageRequest import chats.data.remote.dto.ChatDto import chats.data.remote.dto.MessageDto import chats.domain.model.Chat import chats.domain.model.Message import chats.domain.model.MediaType import chats.domain.repository.ChatRepository +import core.security.TokenManager +import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MultipartBody +import okhttp3.RequestBody.Companion.asRequestBody import javax.inject.Inject class ChatRepositoryImpl @Inject constructor( - private val api: ChatApi + private val api: ChatApi, + private val tokenManager: TokenManager ) : ChatRepository { override suspend fun getChats(): List { - return api.getChats().map { it.toDomain() } + val currentUserId = tokenManager.getUserId() ?: "" + return api.getChats().map { it.toDomain(currentUserId) } } override suspend fun getMessages(chatId: String): List { @@ -22,7 +29,8 @@ class ChatRepositoryImpl @Inject constructor( } override suspend fun sendMessage(chatId: String, content: String): Message { - return api.sendMessage(chatId, content).toDomain() + val request = SendMessageRequest(content = content, type = "text") + return api.sendMessage(chatId, request).toDomain() } override suspend fun addReaction(messageId: String, emoji: String) { @@ -36,17 +44,37 @@ class ChatRepositoryImpl @Inject constructor( override suspend fun markMessagesAsRead(chatId: String, lastMessageId: String) { api.markMessagesAsRead(chatId, lastMessageId) } + + override suspend fun uploadMedia(file: java.io.File): String { + val requestFile = file.asRequestBody("image/*".toMediaTypeOrNull()) + val body = MultipartBody.Part.createFormData("file", file.name, requestFile) + return api.uploadFile(body).url + } } + + + // Mappers -fun ChatDto.toDomain(): Chat = Chat( - id = id, - type = type, - name = name ?: "Unknown Chat", - avatar = null, // Update if avatar is added to ChatDto - unreadCount = unreadCount, - lastMessage = messages.firstOrNull()?.toDomain() -) +fun ChatDto.toDomain(currentUserId: String): Chat { + // Если это личный чат и имя пустое, ищем имя собеседника в списке участников + val chatName = name ?: if (type == "personal") { + members.firstOrNull { it.userId != currentUserId }?.user?.displayName ?: "Unknown Chat" + } else "Group Chat" + + val chatAvatar = avatar ?: if (type == "personal") { + members.firstOrNull { it.userId != currentUserId }?.user?.avatarUrl + } else null + + return Chat( + id = id, + type = type, + name = chatName, + avatar = chatAvatar, + unreadCount = unreadCount, + lastMessage = messages.firstOrNull()?.toDomain() + ) +} fun MessageDto.toDomain(): Message = Message( id = id, diff --git a/client-mobile/chats/di/ChatModule.kt b/client-mobile/chats/di/ChatModule.kt index d3a222a..97c0f0c 100644 --- a/client-mobile/chats/di/ChatModule.kt +++ b/client-mobile/chats/di/ChatModule.kt @@ -4,6 +4,7 @@ import chats.data.remote.api.ChatApi import chats.data.remote.signalr.ChatHubClient import chats.data.repository.ChatRepositoryImpl import chats.domain.repository.ChatRepository +import core.security.TokenManager import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -23,8 +24,8 @@ object ChatModule { @Provides @Singleton - fun provideChatRepository(api: ChatApi): ChatRepository { - return ChatRepositoryImpl(api) + fun provideChatRepository(api: ChatApi, tokenManager: TokenManager): ChatRepository { + return ChatRepositoryImpl(api, tokenManager) } @Provides diff --git a/client-mobile/chats/domain/repository/ChatRepository.kt b/client-mobile/chats/domain/repository/ChatRepository.kt index 13f9d5f..259060b 100644 --- a/client-mobile/chats/domain/repository/ChatRepository.kt +++ b/client-mobile/chats/domain/repository/ChatRepository.kt @@ -10,4 +10,6 @@ interface ChatRepository { suspend fun addReaction(messageId: String, emoji: String) suspend fun sendTypingStatus(chatId: String) suspend fun markMessagesAsRead(chatId: String, lastMessageId: String) + suspend fun uploadMedia(file: java.io.File): String } + diff --git a/client-mobile/chats/presentation/chat_detail/ChatDetailScreen.kt b/client-mobile/chats/presentation/chat_detail/ChatDetailScreen.kt index e791263..cfc5ca0 100644 --- a/client-mobile/chats/presentation/chat_detail/ChatDetailScreen.kt +++ b/client-mobile/chats/presentation/chat_detail/ChatDetailScreen.kt @@ -1,6 +1,5 @@ package chats.presentation.chat_detail -import android.Manifest import android.net.Uri import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts @@ -23,13 +22,13 @@ import chats.presentation.components.EmojiPicker import chats.presentation.components.MessageBubble import core.utils.VoiceRecorder import core.utils.copyUriToFile -import kotlinx.coroutines.launch import java.io.File import ru.knot.messager.R @OptIn(ExperimentalMaterial3Api::class) @Composable fun ChatDetailScreen( + chatId: String, chatName: String, viewModel: ChatDetailViewModel, onBack: () -> Unit @@ -52,6 +51,11 @@ fun ChatDetailScreen( } } + // Загрузка данных чата при входе + LaunchedEffect(chatId) { + viewModel.setChatId(chatId) + } + // Автопрокрутка к последнему сообщению LaunchedEffect(state.messages.size) { if (state.messages.isNotEmpty()) { @@ -112,7 +116,7 @@ fun ChatDetailScreen( items(state.messages) { message -> MessageBubble( message = message, - isCurrentUser = message.senderId == "CURRENT_USER_ID" // TODO: Get from Auth + isCurrentUser = message.senderId == viewModel.getCurrentUserId() ) } } @@ -163,7 +167,6 @@ fun ChatDetailScreen( } else { voiceRecorder.stopRecording() isRecording = false - // TODO: Send voice file } } ) { diff --git a/client-mobile/chats/presentation/chat_detail/ChatDetailViewModel.kt b/client-mobile/chats/presentation/chat_detail/ChatDetailViewModel.kt index 6083487..142504a 100644 --- a/client-mobile/chats/presentation/chat_detail/ChatDetailViewModel.kt +++ b/client-mobile/chats/presentation/chat_detail/ChatDetailViewModel.kt @@ -8,6 +8,7 @@ import chats.domain.model.Message import chats.domain.repository.ChatRepository import chats.data.repository.toDomain import core.network.ServerConfig +import core.security.TokenManager import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Job import kotlinx.coroutines.delay @@ -30,7 +31,8 @@ data class ChatDetailState( class ChatDetailViewModel @Inject constructor( private val repository: ChatRepository, private val signalrClient: ChatHubClient, - private val serverConfig: ServerConfig + private val serverConfig: ServerConfig, + private val tokenManager: TokenManager ) : ViewModel() { private val _state = MutableStateFlow(ChatDetailState()) @@ -48,6 +50,10 @@ class ChatDetailViewModel @Inject constructor( ) } } + fun getCurrentUserId(): String { + return tokenManager.getUserId() ?: "" + } + fun setChatId(chatId: String) { currentChatId = chatId loadMessages(chatId) @@ -58,7 +64,9 @@ class ChatDetailViewModel @Inject constructor( viewModelScope.launch { _state.update { it.copy(isLoading = true) } try { - val messages = repository.getMessages(chatId) + // Бэкенд обычно возвращает сообщения от новых к старым. + // Для чата нам нужно наоборот: старые вверху, новые внизу. + val messages = repository.getMessages(chatId).reversed() _state.update { it.copy(messages = messages, isLoading = false) } } catch (e: Exception) { _state.update { it.copy(isLoading = false, error = e.localizedMessage) } @@ -146,6 +154,15 @@ class ChatDetailViewModel @Inject constructor( _state.update { it.copy(error = "File too large") } return } - // Upload logic... + viewModelScope.launch { + try { + val url = repository.uploadMedia(file) + // After upload, we might want to send a message with this media + // For now, let's just log it or handle as per app requirements + } catch (e: Exception) { + _state.update { it.copy(error = e.localizedMessage) } + } + } } } + diff --git a/client-mobile/chats/presentation/chat_list/ChatListViewModel.kt b/client-mobile/chats/presentation/chat_list/ChatListViewModel.kt index ce88bbf..39214a4 100644 --- a/client-mobile/chats/presentation/chat_list/ChatListViewModel.kt +++ b/client-mobile/chats/presentation/chat_list/ChatListViewModel.kt @@ -7,6 +7,7 @@ import chats.domain.repository.ChatRepository import chats.data.remote.signalr.ChatHubClient import chats.data.remote.signalr.ChatEvent import core.network.ServerConfig +import core.security.TokenManager import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch @@ -24,7 +25,8 @@ data class ChatListState( class ChatListViewModel @Inject constructor( private val repository: ChatRepository, private val signalrClient: ChatHubClient, - private val serverConfig: ServerConfig + private val serverConfig: ServerConfig, + private val tokenManager: TokenManager ) : ViewModel() { private val _state = MutableStateFlow(ChatListState()) @@ -41,6 +43,8 @@ class ChatListViewModel @Inject constructor( observeSignalREvents() } + private fun getCurrentUserId(): String = tokenManager.getUserId() ?: "" + fun loadChats() { viewModelScope.launch { _state.update { it.copy(isLoading = true) } @@ -61,7 +65,8 @@ class ChatListViewModel @Inject constructor( updateChatsWithNewMessage(event) } is ChatEvent.NewChat -> { - _state.update { it.copy(chats = listOf(event.chat.toDomain()) + it.chats) } + val currentUserId = getCurrentUserId() + _state.update { it.copy(chats = listOf(event.chat.toDomain(currentUserId)) + it.chats) } } else -> Unit } @@ -69,6 +74,7 @@ class ChatListViewModel @Inject constructor( .launchIn(viewModelScope) } + private fun updateChatsWithNewMessage(event: ChatEvent.NewMessage) { _state.update { currentState -> val updatedChats = currentState.chats.map { chat -> diff --git a/client-mobile/chats/presentation/components/ChatItem.kt b/client-mobile/chats/presentation/components/ChatItem.kt index 621559d..e2ef497 100644 --- a/client-mobile/chats/presentation/components/ChatItem.kt +++ b/client-mobile/chats/presentation/components/ChatItem.kt @@ -17,6 +17,10 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import chats.domain.model.Chat +import androidx.compose.foundation.shape.RoundedCornerShape +import coil.compose.AsyncImage +import androidx.compose.ui.layout.ContentScale + @Composable fun ChatItem( chat: Chat, @@ -29,18 +33,27 @@ fun ChatItem( .padding(12.dp), verticalAlignment = Alignment.CenterVertically ) { - // Заглушка аватара (в реальном приложении используем Coil для URL) + // Аватар (мягкий квадрат) Box( modifier = Modifier .size(50.dp) - .clip(CircleShape) + .clip(RoundedCornerShape(12.dp)) .background(MaterialTheme.colorScheme.primaryContainer), contentAlignment = Alignment.Center ) { - Text( - text = chat.name.take(1).uppercase(), - style = MaterialTheme.typography.titleMedium - ) + if (chat.avatar != null) { + AsyncImage( + model = chat.avatar, + contentDescription = null, + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop + ) + } else { + Text( + text = chat.name.take(1).uppercase(), + style = MaterialTheme.typography.titleMedium + ) + } } Spacer(modifier = Modifier.width(12.dp)) diff --git a/client-mobile/chats/presentation/components/MessageBubble.kt b/client-mobile/chats/presentation/components/MessageBubble.kt index f3b3575..9c3f4b1 100644 --- a/client-mobile/chats/presentation/components/MessageBubble.kt +++ b/client-mobile/chats/presentation/components/MessageBubble.kt @@ -38,22 +38,18 @@ fun MessageBubble( var showReactionPicker by remember { mutableStateOf(false) } val backgroundColor = if (isCurrentUser) { - MaterialTheme.colorScheme.primary + Color(0xFF3390EC) // Telegram Blue } else { - MaterialTheme.colorScheme.surfaceVariant + Color(0xFF2B2B2B) // Dark Grey } - val contentColor = if (isCurrentUser) { - MaterialTheme.colorScheme.onPrimary - } else { - MaterialTheme.colorScheme.onSurfaceVariant - } + val contentColor = Color.White val alignment = if (isCurrentUser) Alignment.CenterEnd else Alignment.CenterStart val shape = if (isCurrentUser) { - RoundedCornerShape(16.dp, 16.dp, 4.dp, 16.dp) + RoundedCornerShape(12.dp, 12.dp, 4.dp, 12.dp) } else { - RoundedCornerShape(16.dp, 16.dp, 16.dp, 4.dp) + RoundedCornerShape(12.dp, 12.dp, 12.dp, 4.dp) } val isVoiceMessage = message.mediaType == MediaType.AUDIO && diff --git a/client-mobile/core/security/TokenManager.kt b/client-mobile/core/security/TokenManager.kt index 262fc76..abc4c4e 100644 --- a/client-mobile/core/security/TokenManager.kt +++ b/client-mobile/core/security/TokenManager.kt @@ -20,15 +20,23 @@ class TokenManager @Inject constructor(context: Context) { EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM ) - fun saveToken(token: String) { - prefs.edit().putString("jwt_token", token).apply() + fun saveToken(token: String, userId: String? = null) { + val editor = prefs.edit().putString("jwt_token", token) + if (userId != null) { + editor.putString("user_id", userId) + } + editor.apply() } fun getToken(): String? { return prefs.getString("jwt_token", null) } + fun getUserId(): String? { + return prefs.getString("user_id", null) + } + fun deleteToken() { - prefs.edit().remove("jwt_token").apply() + prefs.edit().remove("jwt_token").remove("user_id").apply() } } diff --git a/client-mobile/navigation/AppNavigation.kt b/client-mobile/navigation/AppNavigation.kt index 1f5bb8f..df77805 100644 --- a/client-mobile/navigation/AppNavigation.kt +++ b/client-mobile/navigation/AppNavigation.kt @@ -51,9 +51,12 @@ sealed class Screen(val route: String) { @Composable fun AppNavigation( - navController: NavHostController = rememberNavController(), - startDestination: String = Screen.Login.route + navController: NavHostController = rememberNavController() ) { + val authViewModel: AuthViewModel = hiltViewModel() + val authState by authViewModel.state.collectAsState() + val startDestination = if (authState.isAuthenticated) Screen.ChatList.route else Screen.Login.route + val navBackStackEntry by navController.currentBackStackEntryAsState() val currentRoute = navBackStackEntry?.destination?.route @@ -137,6 +140,7 @@ fun AppNavigation( val viewModel: ChatDetailViewModel = hiltViewModel() ChatDetailScreen( + chatId = chatId, chatName = chatName, viewModel = viewModel, onBack = { navController.popBackStack() }