From d8b0d8653416b51c3a140881a722b9c0c2a67789 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 10:48:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A7=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 5964249 -> 6479814 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .../.gradle/8.5/fileHashes/fileHashes.bin | Bin 319478 -> 321578 bytes .../.gradle/8.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.5/fileHashes/resourceHashesCache.bin | Bin 115197 -> 121181 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../buildOutputCleanup/outputFiles.bin | Bin 1162583 -> 1163663 bytes .../chats/data/remote/api/ChatApi.kt | 2 +- .../chats/data/remote/dto/ChatDtos.kt | 9 +- .../data/remote/signalr/ChatHubClient.kt | 14 +- .../data/repository/ChatRepositoryImpl.kt | 74 ++-- client-mobile/chats/di/ChatModule.kt | 5 +- client-mobile/chats/domain/model/Message.kt | 1 + .../chat_detail/ChatDetailScreen.kt | 30 +- .../chat_detail/ChatDetailViewModel.kt | 20 +- .../chat_list/ChatListViewModel.kt | 14 +- .../presentation/components/MessageBubble.kt | 323 +++++++++++++----- .../presentation/components/AppAudioPlayer.kt | 173 ++++++---- .../core/presentation/components/AppAvatar.kt | 23 +- 19 files changed, 504 insertions(+), 184 deletions(-) diff --git a/client-mobile/.gradle/8.5/executionHistory/executionHistory.bin b/client-mobile/.gradle/8.5/executionHistory/executionHistory.bin index dccdf34f12f5f72f85c9326d479c9bf9788e23c9..19a1f6dcadfdf9b41461995ce4a480acb86ac983 100644 GIT binary patch delta 100523 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 delta 74568 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

yAn!3n>;J`gdlX5yD$ z)6HMg&41r?bCT!vs<^2}i(+nD3CF#*%>CnZ6Z_cxOkV!}S|_b!f@)jo=Cu#ILmvHc zVmWg+V@&!qTZ51Uo`!X#?z!HHWsb+w(NlLmQ_~u1Bx;OTfGc{biDl+&_9a1UYL6Sch)OV6bF;rUCoS-urJRm?7DmHvZ?>Eb&mZkE#n z(rnuC!P`%FNiCg{zcgptm;IPJ4wX#Nl0b#Coeq%C{T8K+Bwa%?l}r@y%k9w>RTR8{2;A&PHof*I2fnu z+d(#qxTD6LZ|k}w<#LGg%^c261c{lWRpCyD$mc;Dl77BfW= z^C1Gvv!^!t>a!{mk3D@;5XZwljh|=OAVVkM${x9a7>KU6F>Su!RJxsm(J!-wWr=O zkejF0MARS|l1sLlUvTWn%Cy|&m(}4G@pd=IIA3Edw@rxNU-=z;F znWLzIA#J2Pq11JGhI?sw-inf(ljS#1h*ZcuQvaNX%9a8ixoOl+9nM9IYsgJGpp~?k zJOAkP!|Yi@^V1!a6t0`nAxzTuEhIfoR}`u0M!PLe$Y1h4DX9UK&IA81t`1x_GGFa< zkd&BsyvqG`c#*df|6#so!UBq)rUHH^bYp?-`K{(l*v_|RGSSHz_Ns1YdeyNL6;7N} zF8T6K<$LGO>QDE@L*DqB?SqpraZb0%osVrNaQ0X4*eFjp*BQ+zL+!F5*GVPu*A{X9 zN6#d;ADy778F~z5B{(&r*~Y$&q^9&`NiDhMpW8dh+CX4u?$<3q+r8b&NNS`ZRGu6HTI`{PpN3$+x<+W2dU z@IPut`n)*V-}^D%e6~Zb2VoCxRZ`cJNdk<|ePY}8ktL6$mhA6JnC82FB;d;WX75_EzeC|({WQ>rJ;YkF zzguC_ja2oO(~tdGr;+`GRfXKR@m`%#Zp&?KG}&*as+$Y;W*#F zxp{X(d(id-^?gUO<=4;6-JGzRo@0rsUwCg}lKoxd{$Y!)zjNIFTWtMZ+dM{ z|IilOuPIUAZrOjoFONQ&Ttq$MHJI_Re- z_N%+kJ$xfSRcZDAlJ1^l|H+B^e`k+O$jS8c`;FoU`4}M8)}Sk7f2ZHQ-zxe$`TnbK z75)8uQ{O5?@U6l|>z`Oh_V*Lr{}V%h7tw$76GMMj(SP{F(BD_|Up_I&^m7)Cnlj*b zvc{1T;I-o;L*ifg%+TMlH2%zhhKgEUebR#Pdhp-q{Ql(e2cH@KO&2xBx_?E(U4)eD#8)|2@18JFs;{eO3_nG?! zzc{GDE3zjaL z%=REQ;>71D+47i=!Cw1XcVpriW=09v!^yTFx#mQtmzo7+bgaSbPiqlFKhzG5@PzQr zU_Cugp@4Ww#mJg%h?2v-NMbE!R0D$vQ9}Cb-E~l09vnRxKHp1$xQ%6QALtrNW)NY2r^h`n}P&V-BYS!Q<1c#VdDb*y@3Yjhh#tCda&Vj9h=EE!VH&BgR z=*4BmLChIj+6IE z$`FS@Q=%0ci3%3ZAl_r7@5-J=;3k9gLxgZoE=E=sp%$pyF_4rv4X;qbNOr8PLE1KV zHWDp`RK3GOO>XS*Y0JEn=!ybw7RYZI15v46=4GvXjIy+0D6}Zk znF^O(Hm+3H6 z6*_~ew81;w!wATHD4NMYf+mOb(%d~!@=VA>C{J*?CI}VK$#2rJHD`VR2{q&nUQ7Ul zAor<6BbJi&W^;+-RCal@wTNq&wgAwu{y(2}00&NLq9Sj${;>W(pM9j5Ehuxg(0@q( zKhK~ppwd_`6~+EPoPDQFS|WyRs6Ihe&PE?7vvW8)b#tKIQmrG{mpy^53>m)cP-Z;j zY<9Z42T_H^81saVbQZc{R83_UM$a+onJ2VT#@!Bdg7~L@+0FO!zQ$C$7y2wc8JLq1 z1b;VsO`yYz(zn$oaL0yf!i8gqt61I2pFOp=W&1;^P%XRFpKU?B!E&(qV@}uXpa8ZH zoz?0Np+3YttXs1{=))|9q?1|hz68!aaFGOJROguL7-~#4ztZ(yCUgtS34-jWn$5K! zwkfd=+mH@sPonFnYcN|#H|!!n66I8q+K|3Ws3nTzz|T$JqoCZWs$>-qD5M)zWVBGo zgvyShHhN9Oy=>ZkcN01SnV}FGl?r{=&;qF?K5LZ_~AqOG!G|KIIkz=0snK7#W%&ep^eoUZRP*;e#$nqmsg z=pLpe&4P^W!Kh&tn>QJ^Yd9aAjQ> z0I>n5e;YV!JV+%R_Dz;4knqfb0tQ-YSx`nC(ip+P1~e|4?l|dA-n%c?iTB zkGWgXov&)5(24F2A~B-o19geeNw?w9dmL@uiBlK_ZxBu+Dtco%8o4@KE1;xhY&oJC z)4H5&h13v~wwyhYE|1)e!j*K6S1)IeVKzY$da}I`6-&Jn?#2lIRc52XuC^o-$`k>~ zl?ihYq`%M0h8_eWS3+MzRkhNUY$w{5i<_-OZ`ZhrJw*~12DsAVqSD*WnyAqqez(24 z3L=GvP^9N>Yfopk-fGaN>P!4;n8Q#uUt)yo8>-nVoK5v=YBlb2h&oKtj|1a)(gZHY zN6^Nz!|=bnabR48B}h+O0Ub^@l%S61k!jl}(C{ rWecycP;j-Eg{bC`a3uo`uk~6f5*-!_y#Dm-tf=Tk;Bki7Grj)@M>_rl diff --git a/client-mobile/.gradle/8.5/executionHistory/executionHistory.lock b/client-mobile/.gradle/8.5/executionHistory/executionHistory.lock index d48925eab313195ce3a2f215aae9805920863d47..0074cdd5e0ceffdbb801f85f1126e7893ed25772 100644 GIT binary patch literal 17 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 delta 38437 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

}l)TW7$7 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 B7(W02 delta 1016 zcmW+!ZBUeD6y+=w=?{!Qu*<~CGKmb+?!J5k06%c^#Lx`75Q8m(A-)Rn5Ksnki(;L|;{e?vbdr1_{XEleM5G^+89>!DWD*MM>} zn$=jwx1hdfcF<$i!_;au(xA1QT(-kBWz#6ZE^PK2pxVqHO32daVAe8uvX@m?P9D_k zvxruIZmIz7FBm3kVHv$w=u_s+@pwEX5EXTDAKxv+UUqH9FmEqH8Glv;jguX69C09# ze{#sTqAdbDBggG6_?$o83KP$6#j?IojA|&aV{I#5q>gVwbl{?0ox3P(mf=h~HXNn{ zK{w3=`>8i%R3jk~_3ub3D0_4V4UF39uhC3ZFg65Ans8I^gp>ZBXjXyAMbNd|omGRwV46U8+rp0L|70-ky>8g)LuJ+KeYs=I)+fO^^x@pb4pDxeOtLbpOK|S~} z-Jl8L#fgt2Z>x>s)4}6#^W1T%nww;3d6P7c zHwj#6k`~tqgjChdqtC;`x2)pcT^j=63mSY}nTar$XQ7AhWuaR?n+*%}*&IA+;MH7c zdPyEW1mD{v4IkyhsDGc2bq4;YP)H@ZFqagGl1I@k6$zi@=jQVc1a(O*7P=%R^CYcy z=qH{-bqsln-RyEANak(be60+A{q3E?M&9jCUfLxL$>rDsKD`?)v{E81d*G+3(nLN} z0h2yf5uuOShg5^*T)td@c^{^3nh#2PA#j6xh)lH4PUJ*6tg_}};>E}2fhUw*7CVuFX^=vJ2 zjmJ;IM+3JL^_n*!`F7kf>6hMu{7+y18syS8Xw>_gk^9=v&z^SiF0KP%dholQOHK(| hIwffOj}YHEEe(C02pCfK1}wpKENbHPwqCT_{|Ei>ob&(y diff --git a/client-mobile/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/client-mobile/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 4f5865d4d964338673d252077cc8982f996656b7..826695efadbd5a9abbc0e69e3a8995744fc01d0b 100644 GIT binary patch literal 17 VcmZSf+M}~b{lVOB1~7=21^_Zi1oZ#_ literal 17 VcmZSf+M}~b{lVOB1~3R`1OPFz1YZCE diff --git a/client-mobile/.gradle/buildOutputCleanup/outputFiles.bin b/client-mobile/.gradle/buildOutputCleanup/outputFiles.bin index ffa79b77af4f49f9115253577812de2961ad66a5..0ce2ce667390cae272785cfe99302e5e8f7daa5b 100644 GIT binary patch delta 3190 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 CT-DY9 diff --git a/client-mobile/chats/data/remote/api/ChatApi.kt b/client-mobile/chats/data/remote/api/ChatApi.kt index 787a2ee..9853b8b 100644 --- a/client-mobile/chats/data/remote/api/ChatApi.kt +++ b/client-mobile/chats/data/remote/api/ChatApi.kt @@ -51,7 +51,7 @@ interface ChatApi { suspend fun markGifShared(@Path("id") id: String, @Body query: String) @POST("messages/{messageId}/reactions") - suspend fun addReaction(@Path("messageId") messageId: String, @Body emoji: String) + suspend fun addReaction(@Path("messageId") messageId: String, @Query("emoji") emoji: String) @POST("chats/{chatId}/typing") suspend fun sendTypingStatus(@Path("chatId") chatId: String) diff --git a/client-mobile/chats/data/remote/dto/ChatDtos.kt b/client-mobile/chats/data/remote/dto/ChatDtos.kt index 5999731..2a38635 100644 --- a/client-mobile/chats/data/remote/dto/ChatDtos.kt +++ b/client-mobile/chats/data/remote/dto/ChatDtos.kt @@ -18,7 +18,14 @@ data class MessageDto( @SerializedName("sequenceId") val sequenceId: Int, @SerializedName("createdAt") val createdAt: String, @SerializedName("sender") val sender: UserBasicDto, - @SerializedName("media") val media: List = emptyList() + @SerializedName("media") val media: List = emptyList(), + @SerializedName("reactions") val reactions: List? = emptyList() +) + +data class ReactionDto( + @SerializedName("emoji") val emoji: String, + @SerializedName("count") val count: Int, + @SerializedName("isSetByMe") val isSetByMe: Boolean ) data class MediaItemDto( diff --git a/client-mobile/chats/data/remote/signalr/ChatHubClient.kt b/client-mobile/chats/data/remote/signalr/ChatHubClient.kt index 9bf6e74..e2fe934 100644 --- a/client-mobile/chats/data/remote/signalr/ChatHubClient.kt +++ b/client-mobile/chats/data/remote/signalr/ChatHubClient.kt @@ -10,6 +10,9 @@ import chats.data.remote.dto.MessageDto import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch import javax.inject.Inject import javax.inject.Singleton @@ -18,6 +21,7 @@ class ChatHubClient @Inject constructor() { private var hubConnection: HubConnection? = null private val _events = MutableSharedFlow(extraBufferCapacity = 64) val events: SharedFlow = _events.asSharedFlow() + private val scope = CoroutineScope(Dispatchers.IO) fun connect(baseUrl: String, accessToken: String) { if (hubConnection?.connectionState == HubConnectionState.CONNECTED) return @@ -30,9 +34,17 @@ class ChatHubClient @Inject constructor() { hubConnection?.onClosed { exception -> Log.e("ChatHubClient", "Connection closed", exception) + // Optional: Reconnect logic } - hubConnection?.start()?.blockingAwait() + scope.launch { + try { + hubConnection?.start()?.blockingAwait() + Log.d("ChatHubClient", "SignalR Connected") + } catch (e: Exception) { + Log.e("ChatHubClient", "SignalR Connection Error", e) + } + } } private fun setupHandlers() { diff --git a/client-mobile/chats/data/repository/ChatRepositoryImpl.kt b/client-mobile/chats/data/repository/ChatRepositoryImpl.kt index 1df55e0..8c6c95e 100644 --- a/client-mobile/chats/data/repository/ChatRepositoryImpl.kt +++ b/client-mobile/chats/data/repository/ChatRepositoryImpl.kt @@ -8,6 +8,7 @@ import chats.domain.model.Chat import chats.domain.model.Message import chats.domain.model.MediaType import chats.domain.repository.ChatRepository +import core.network.ServerConfig import core.security.TokenManager import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody @@ -16,21 +17,25 @@ import javax.inject.Inject class ChatRepositoryImpl @Inject constructor( private val api: ChatApi, - private val tokenManager: TokenManager + private val tokenManager: TokenManager, + private val serverConfig: ServerConfig ) : ChatRepository { override suspend fun getChats(): List { val currentUserId = tokenManager.getUserId() ?: "" - return api.getChats().map { it.toDomain(currentUserId) } + val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/") + return api.getChats().map { it.toDomain(currentUserId, baseUrl) } } override suspend fun getMessages(chatId: String): List { - return api.getMessages(chatId).map { it.toDomain() } + val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/") + return api.getMessages(chatId).map { it.toDomain(baseUrl) } } override suspend fun sendMessage(chatId: String, content: String): Message { val request = SendMessageRequest(content = content, type = "text") - return api.sendMessage(chatId, request).toDomain() + val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/") + return api.sendMessage(chatId, request).toDomain(baseUrl) } override suspend fun addReaction(messageId: String, emoji: String) { @@ -56,15 +61,15 @@ class ChatRepositoryImpl @Inject constructor( // Mappers -fun ChatDto.toDomain(currentUserId: String): Chat { +fun ChatDto.toDomain(currentUserId: String, baseUrl: 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") { + val chatAvatar = (avatar ?: if (type == "personal") { members.firstOrNull { it.userId != currentUserId }?.user?.avatarUrl - } else null + } else null)?.ensureAbsoluteUrl(baseUrl) return Chat( id = id, @@ -72,25 +77,48 @@ fun ChatDto.toDomain(currentUserId: String): Chat { name = chatName, avatar = chatAvatar, unreadCount = unreadCount, - lastMessage = messages.firstOrNull()?.toDomain() + lastMessage = messages.firstOrNull()?.toDomain(baseUrl) ) } -fun MessageDto.toDomain(): Message = Message( - id = id, - chatId = chatId, - senderId = senderId, - senderName = sender.displayName, - content = content, - sequenceId = sequenceId, - createdAt = createdAt, - media = media.map { it.url }, - mediaUrl = media.firstOrNull()?.url, - mediaType = when (media.firstOrNull()?.type) { - "image" -> MediaType.IMAGE +fun MessageDto.toDomain(baseUrl: String): Message { + val domainMediaType = when (type) { + "image", "photo" -> MediaType.IMAGE "video" -> MediaType.VIDEO - "audio" -> MediaType.AUDIO + "audio", "voice" -> MediaType.AUDIO "file" -> MediaType.FILE - else -> MediaType.TEXT + else -> when (media.firstOrNull()?.type) { + "image", "photo" -> MediaType.IMAGE + "video" -> MediaType.VIDEO + "audio", "voice" -> MediaType.AUDIO + "file" -> MediaType.FILE + else -> MediaType.TEXT + } } -) + + return Message( + id = id, + chatId = chatId, + senderId = senderId, + senderName = sender.displayName, + senderAvatar = sender.avatarUrl?.ensureAbsoluteUrl(baseUrl), + content = content, + sequenceId = sequenceId, + createdAt = createdAt, + media = media.map { it.url.ensureAbsoluteUrl(baseUrl) }, + mediaUrl = media.firstOrNull()?.url?.ensureAbsoluteUrl(baseUrl), + mediaType = domainMediaType, + reactions = reactions?.associate { it.emoji to it.count } ?: emptyMap() + ) +} + +fun String.ensureAbsoluteUrl(baseUrl: String): String { + return if (this.startsWith("http")) { + this + } else { + val base = baseUrl.removeSuffix("/") + val path = if (this.startsWith("/")) this else "/$this" + "$base$path" + } +} + diff --git a/client-mobile/chats/di/ChatModule.kt b/client-mobile/chats/di/ChatModule.kt index 97c0f0c..5f402bc 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.network.ServerConfig import core.security.TokenManager import dagger.Module import dagger.Provides @@ -24,8 +25,8 @@ object ChatModule { @Provides @Singleton - fun provideChatRepository(api: ChatApi, tokenManager: TokenManager): ChatRepository { - return ChatRepositoryImpl(api, tokenManager) + fun provideChatRepository(api: ChatApi, tokenManager: TokenManager, serverConfig: ServerConfig): ChatRepository { + return ChatRepositoryImpl(api, tokenManager, serverConfig) } @Provides diff --git a/client-mobile/chats/domain/model/Message.kt b/client-mobile/chats/domain/model/Message.kt index 63b55ce..f3cbec6 100644 --- a/client-mobile/chats/domain/model/Message.kt +++ b/client-mobile/chats/domain/model/Message.kt @@ -5,6 +5,7 @@ data class Message( val chatId: String, val senderId: String, val senderName: String, + val senderAvatar: String? = null, val content: String?, val sequenceId: Int, val createdAt: String, diff --git a/client-mobile/chats/presentation/chat_detail/ChatDetailScreen.kt b/client-mobile/chats/presentation/chat_detail/ChatDetailScreen.kt index cfc5ca0..4e77737 100644 --- a/client-mobile/chats/presentation/chat_detail/ChatDetailScreen.kt +++ b/client-mobile/chats/presentation/chat_detail/ChatDetailScreen.kt @@ -20,6 +20,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import chats.presentation.components.EmojiPicker import chats.presentation.components.MessageBubble +import core.presentation.components.AppAvatar import core.utils.VoiceRecorder import core.utils.copyUriToFile import java.io.File @@ -67,14 +68,22 @@ fun ChatDetailScreen( topBar = { TopAppBar( title = { - Column { - Text(chatName, style = MaterialTheme.typography.titleMedium) - if (state.isTyping) { - Text( - stringResource(R.string.typing), - style = MaterialTheme.typography.labelSmall, - color = MaterialTheme.colorScheme.primary - ) + Row(verticalAlignment = Alignment.CenterVertically) { + AppAvatar( + url = state.chatAvatar, + name = state.chatName ?: chatName, + size = 36.dp, + modifier = Modifier.padding(end = 8.dp) + ) + Column { + Text(state.chatName ?: chatName, style = MaterialTheme.typography.titleMedium) + if (state.isTyping) { + Text( + stringResource(R.string.typing), + style = MaterialTheme.typography.labelSmall, + color = MaterialTheme.colorScheme.primary + ) + } } } }, @@ -116,9 +125,12 @@ fun ChatDetailScreen( items(state.messages) { message -> MessageBubble( message = message, - isCurrentUser = message.senderId == viewModel.getCurrentUserId() + isCurrentUser = message.senderId == viewModel.getCurrentUserId(), + senderAvatar = if (message.senderId == viewModel.getCurrentUserId()) null else message.senderAvatar, + onReactionClick = { emoji -> viewModel.addReaction(message.id, emoji) } ) } + } if (state.isLoading) { diff --git a/client-mobile/chats/presentation/chat_detail/ChatDetailViewModel.kt b/client-mobile/chats/presentation/chat_detail/ChatDetailViewModel.kt index 142504a..84ca565 100644 --- a/client-mobile/chats/presentation/chat_detail/ChatDetailViewModel.kt +++ b/client-mobile/chats/presentation/chat_detail/ChatDetailViewModel.kt @@ -19,6 +19,8 @@ import javax.inject.Inject data class ChatDetailState( val messages: List = emptyList(), + val chatName: String? = null, + val chatAvatar: String? = null, val isLoading: Boolean = false, val isTyping: Boolean = false, val typingUser: String? = null, @@ -56,10 +58,25 @@ class ChatDetailViewModel @Inject constructor( fun setChatId(chatId: String) { currentChatId = chatId + loadChatInfo(chatId) loadMessages(chatId) observeSignalREvents() } + private fun loadChatInfo(chatId: String) { + viewModelScope.launch { + try { + val chats = repository.getChats() + val chat = chats.find { it.id == chatId } + chat?.let { c -> + _state.update { it.copy(chatName = c.name, chatAvatar = c.avatar) } + } + } catch (e: Exception) { + // Ignore info load error + } + } + } + fun loadMessages(chatId: String) { viewModelScope.launch { _state.update { it.copy(isLoading = true) } @@ -88,8 +105,9 @@ class ChatDetailViewModel @Inject constructor( when (event) { is ChatEvent.NewMessage -> { // Avoid adding duplicates if already loaded + val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/") _state.update { s -> - val domainMsg = event.message.toDomain() + val domainMsg = event.message.toDomain(baseUrl) if (s.messages.none { it.id == domainMsg.id }) { s.copy(messages = s.messages + domainMsg) } else s diff --git a/client-mobile/chats/presentation/chat_list/ChatListViewModel.kt b/client-mobile/chats/presentation/chat_list/ChatListViewModel.kt index 39214a4..a1141b1 100644 --- a/client-mobile/chats/presentation/chat_list/ChatListViewModel.kt +++ b/client-mobile/chats/presentation/chat_list/ChatListViewModel.kt @@ -39,10 +39,18 @@ class ChatListViewModel @Inject constructor( true } _state.update { it.copy(isStoriesEnabled = isStoriesEnabled) } + + val token = tokenManager.getToken() + if (token != null) { + val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/") + signalrClient.connect(baseUrl, token) + } + loadChats() observeSignalREvents() } + private fun getCurrentUserId(): String = tokenManager.getUserId() ?: "" fun loadChats() { @@ -66,7 +74,8 @@ class ChatListViewModel @Inject constructor( } is ChatEvent.NewChat -> { val currentUserId = getCurrentUserId() - _state.update { it.copy(chats = listOf(event.chat.toDomain(currentUserId)) + it.chats) } + val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/") + _state.update { it.copy(chats = listOf(event.chat.toDomain(currentUserId, baseUrl)) + it.chats) } } else -> Unit } @@ -76,11 +85,12 @@ class ChatListViewModel @Inject constructor( private fun updateChatsWithNewMessage(event: ChatEvent.NewMessage) { + val baseUrl = serverConfig.getBaseUrl().removeSuffix("/api/") _state.update { currentState -> val updatedChats = currentState.chats.map { chat -> if (chat.id == event.message.chatId) { chat.copy( - lastMessage = event.message.toDomain(), + lastMessage = event.message.toDomain(baseUrl), unreadCount = chat.unreadCount + 1 ) } else chat diff --git a/client-mobile/chats/presentation/components/MessageBubble.kt b/client-mobile/chats/presentation/components/MessageBubble.kt index 9c3f4b1..d65ac94 100644 --- a/client-mobile/chats/presentation/components/MessageBubble.kt +++ b/client-mobile/chats/presentation/components/MessageBubble.kt @@ -22,19 +22,29 @@ import chats.domain.model.MediaType import coil.compose.AsyncImage import core.presentation.components.AppVideoPlayer import core.presentation.components.AppAudioPlayer - +import core.presentation.components.AppAvatar +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Description +import androidx.compose.material.icons.filled.Download +import androidx.compose.material.icons.filled.Done +import androidx.compose.material.icons.filled.DoneAll import chats.presentation.components.LinkPreview import android.content.Intent import android.net.Uri import androidx.compose.ui.platform.LocalContext +import androidx.compose.material3.Icon +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.foundation.shape.CircleShape @OptIn(androidx.compose.foundation.ExperimentalFoundationApi::class) @Composable fun MessageBubble( message: Message, isCurrentUser: Boolean, + senderAvatar: String? = null, onReactionClick: (String) -> Unit = {} ) { + val context = LocalContext.current var showReactionPicker by remember { mutableStateOf(false) } val backgroundColor = if (isCurrentUser) { @@ -47,22 +57,33 @@ fun MessageBubble( val alignment = if (isCurrentUser) Alignment.CenterEnd else Alignment.CenterStart val shape = if (isCurrentUser) { - RoundedCornerShape(12.dp, 12.dp, 4.dp, 12.dp) + RoundedCornerShape(16.dp, 16.dp, 4.dp, 16.dp) } else { - RoundedCornerShape(12.dp, 12.dp, 12.dp, 4.dp) + RoundedCornerShape(16.dp, 16.dp, 16.dp, 4.dp) } val isVoiceMessage = message.mediaType == MediaType.AUDIO && (message.content == null || message.content.isEmpty()) - Box( + Row( modifier = Modifier .fillMaxWidth() - .padding(horizontal = 8.dp, vertical = 4.dp), - contentAlignment = alignment + .padding(horizontal = 8.dp, vertical = 2.dp), + horizontalArrangement = if (isCurrentUser) Arrangement.End else Arrangement.Start, + verticalAlignment = Alignment.Bottom ) { + if (!isCurrentUser) { + AppAvatar( + url = senderAvatar, + name = message.senderName, + size = 32.dp, + modifier = Modifier.padding(end = 8.dp, bottom = 4.dp) + ) + } + Column( modifier = Modifier + .widthIn(max = 300.dp) .clip(shape) .background(backgroundColor) .combinedClickable( @@ -70,7 +91,6 @@ fun MessageBubble( onLongClick = { showReactionPicker = true } ) .padding(8.dp) - .widthIn(max = 300.dp) ) { if (showReactionPicker) { Popup( @@ -84,37 +104,35 @@ fun MessageBubble( }) } } - // Sender Name (only for others) - if (!isCurrentUser) { - Text( - text = message.senderName, - style = MaterialTheme.typography.labelSmall, - color = contentColor.copy(alpha = 0.7f), - modifier = Modifier.padding(bottom = 2.dp) - ) - } // Reply Info message.replyTo?.let { reply -> - Box( + Row( modifier = Modifier .fillMaxWidth() - .padding(bottom = 4.dp) + .padding(bottom = 6.dp) .clip(RoundedCornerShape(4.dp)) .background(contentColor.copy(alpha = 0.1f)) - .padding(8.dp) + .height(IntrinsicSize.Min) ) { - Column { + Box( + modifier = Modifier + .fillMaxHeight() + .width(2.dp) + .background(if (isCurrentUser) Color.White else Color(0xFF3390EC)) + ) + Column(modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp)) { Text( text = reply.senderName, - style = MaterialTheme.typography.labelSmall, - color = contentColor, - maxLines = 1 + style = MaterialTheme.typography.labelMedium, + color = if (isCurrentUser) Color.White else Color(0xFF3390EC), + maxLines = 1, + fontWeight = androidx.compose.ui.text.font.FontWeight.Bold ) Text( text = reply.content ?: "[Media]", style = MaterialTheme.typography.bodySmall, - color = contentColor.copy(alpha = 0.7f), + color = contentColor.copy(alpha = 0.8f), maxLines = 1 ) } @@ -122,57 +140,65 @@ fun MessageBubble( } // Media Content - if (message.mediaUrl != null) { - when (message.mediaType) { - MediaType.IMAGE -> { - AsyncImage( - model = message.mediaUrl, - contentDescription = null, - modifier = Modifier - .fillMaxWidth() - .heightIn(max = 200.dp) - .clip(RoundedCornerShape(12.dp)), - contentScale = ContentScale.Crop - ) - Spacer(modifier = Modifier.height(4.dp)) + if (message.media.isNotEmpty()) { + val mediaCount = message.media.size + if (mediaCount == 1) { + val mediaUrl = message.media[0] + when (message.mediaType) { + MediaType.IMAGE -> { + AsyncImage( + model = mediaUrl, + contentDescription = null, + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(12.dp)) + .clickable { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(mediaUrl)) + context.startActivity(intent) + }, + contentScale = ContentScale.FillWidth + ) + } + MediaType.VIDEO -> { + AppVideoPlayer( + url = mediaUrl, + modifier = Modifier + .fillMaxWidth() + .height(200.dp) + .clip(RoundedCornerShape(12.dp)), + useController = true, + autoPlay = false + ) + } + MediaType.AUDIO -> { + AppAudioPlayer( + url = mediaUrl, + isVoiceMessage = isVoiceMessage, + contentColor = contentColor + ) + } + MediaType.FILE -> { + FileItem(mediaUrl = mediaUrl, isCurrentUser = isCurrentUser, contentColor = contentColor) + } + else -> {} } - MediaType.VIDEO -> { - AppVideoPlayer( - url = message.mediaUrl, - modifier = Modifier - .fillMaxWidth() - .height(200.dp) - .clip(RoundedCornerShape(12.dp)), - useController = true, - autoPlay = false - ) - Spacer(modifier = Modifier.height(4.dp)) - } - MediaType.AUDIO -> { - AppAudioPlayer( - url = message.mediaUrl, - isVoiceMessage = isVoiceMessage, - contentColor = contentColor - ) - Spacer(modifier = Modifier.height(4.dp)) - } - else -> {} + } else if (mediaCount > 1) { + // Photo Grid for multiple images + PhotoGrid( + urls = message.media, + modifier = Modifier + .fillMaxWidth() + .height(300.dp) + .clip(RoundedCornerShape(12.dp)) + ) + } + if (mediaCount > 0) { + Spacer(modifier = Modifier.height(4.dp)) } } - // Text Content (Story reply or simple text) - if (message.mediaType == MediaType.STORY_REPLY) { - Box( - modifier = Modifier - .fillMaxWidth() - .padding(bottom = 4.dp) - .clip(RoundedCornerShape(8.dp)) - .background(contentColor.copy(alpha = 0.1f)) - .padding(8.dp) - ) { - Text("Story Reply: ${message.content}", color = contentColor, style = MaterialTheme.typography.bodyMedium) - } - } else if (!message.content.isNullOrBlank() && !isVoiceMessage) { + // Text Content + if (!message.content.isNullOrBlank() && !isVoiceMessage) { Text( text = message.content, style = MaterialTheme.typography.bodyMedium, @@ -185,20 +211,157 @@ fun MessageBubble( modifier = Modifier.align(Alignment.End), verticalAlignment = Alignment.CenterVertically ) { + if (message.reactions.isNotEmpty()) { + MessageReactions( + reactions = message.reactions, + onReactionClick = onReactionClick, + modifier = Modifier.padding(end = 4.dp) + ) + } Text( text = message.createdAt.takeLast(5), style = MaterialTheme.typography.labelSmall, - color = contentColor.copy(alpha = 0.6f) - ) - } - - // Reactions - if (message.reactions.isNotEmpty()) { - MessageReactions( - reactions = message.reactions, - onReactionClick = onReactionClick + color = contentColor.copy(alpha = 0.6f), + fontSize = 10.sp ) + if (isCurrentUser) { + Spacer(modifier = Modifier.width(2.dp)) + Icon( + imageVector = if (message.isRead) Icons.Default.DoneAll else Icons.Default.Done, + contentDescription = null, + modifier = Modifier.size(12.dp), + tint = contentColor.copy(alpha = 0.6f) + ) + } } } } } + +@Composable +fun MessageReactions( + reactions: Map, + onReactionClick: (String) -> Unit, + modifier: Modifier = Modifier +) { + Row( + modifier = modifier, + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + reactions.forEach { (emoji, count) -> + Box( + modifier = Modifier + .clip(CircleShape) + .background(Color.White.copy(alpha = 0.2f)) + .clickable { onReactionClick(emoji) } + .padding(horizontal = 6.dp, vertical = 2.dp) + ) { + Row(verticalAlignment = Alignment.CenterVertically) { + Text(text = emoji, fontSize = 12.sp) + if (count > 1) { + Spacer(modifier = Modifier.width(2.dp)) + Text( + text = count.toString(), + fontSize = 10.sp, + color = Color.White + ) + } + } + } + } + } +} + +@Composable +fun FileItem(mediaUrl: String, isCurrentUser: Boolean, contentColor: Color) { + Row( + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(8.dp)) + .background(contentColor.copy(alpha = 0.1f)) + .padding(8.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Box( + modifier = Modifier + .size(40.dp) + .clip(RoundedCornerShape(8.dp)) + .background(if (isCurrentUser) Color.White.copy(alpha = 0.2f) else Color(0xFF3390EC).copy(alpha = 0.2f)), + contentAlignment = Alignment.Center + ) { + Icon( + Icons.Default.Description, + contentDescription = null, + tint = contentColor + ) + } + Column( + modifier = Modifier + .weight(1f) + .padding(horizontal = 8.dp) + ) { + val fileName = remember(mediaUrl) { + val decoded = Uri.decode(mediaUrl.substringAfterLast("/")) + if (decoded.length > 30) { + decoded.take(15) + "..." + decoded.takeLast(10) + } else { + decoded + } + } + Text( + text = fileName, + style = MaterialTheme.typography.bodySmall, + color = contentColor, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + Text( + text = if (mediaUrl.endsWith(".mp3", ignoreCase = true) || mediaUrl.contains("audio")) "Audio" else "File", + style = MaterialTheme.typography.labelSmall, + color = contentColor.copy(alpha = 0.6f) + ) + } + Icon( + Icons.Default.Download, + contentDescription = null, + tint = contentColor, + modifier = Modifier.size(20.dp) + ) + } +} + +@Composable +fun PhotoGrid(urls: List, modifier: Modifier = Modifier) { + val items = urls.take(4) + Column(modifier = modifier) { + val rows = (items.size + 1) / 2 + for (i in 0 until rows) { + Row(modifier = Modifier.weight(1f)) { + val firstIndex = i * 2 + AsyncImage( + model = items[firstIndex], + contentDescription = null, + modifier = Modifier + .weight(1f) + .fillMaxHeight() + .padding(1.dp), + contentScale = ContentScale.Crop + ) + if (firstIndex + 1 < items.size) { + AsyncImage( + model = items[firstIndex + 1], + contentDescription = null, + modifier = Modifier + .weight(1f) + .fillMaxHeight() + .padding(1.dp), + contentScale = ContentScale.Crop + ) + } else if (rows > 1) { + Spacer(modifier = Modifier.weight(1f)) + } + } + } + } +} + diff --git a/client-mobile/core/presentation/components/AppAudioPlayer.kt b/client-mobile/core/presentation/components/AppAudioPlayer.kt index e47bbc7..178274f 100644 --- a/client-mobile/core/presentation/components/AppAudioPlayer.kt +++ b/client-mobile/core/presentation/components/AppAudioPlayer.kt @@ -1,8 +1,10 @@ package core.presentation.components import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Pause import androidx.compose.material.icons.filled.PlayArrow @@ -21,12 +23,16 @@ import androidx.media3.common.Player import androidx.media3.exoplayer.ExoPlayer import kotlinx.coroutines.delay +import androidx.compose.material.icons.filled.Download +import androidx.compose.material.icons.filled.GraphicEq +import androidx.compose.ui.text.font.FontWeight + @Composable fun AppAudioPlayer( url: String, isVoiceMessage: Boolean = false, modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurfaceVariant + contentColor: Color = Color.White ) { val context = LocalContext.current val exoPlayer = remember { @@ -42,6 +48,8 @@ fun AppAudioPlayer( var duration by remember { mutableLongStateOf(0L) } var playbackSpeed by remember { mutableFloatStateOf(1.0f) } + val fileName = remember(url) { url.substringAfterLast("/") } + DisposableEffect(Unit) { val listener = object : Player.Listener { override fun onIsPlayingChanged(playing: Boolean) { @@ -60,7 +68,6 @@ fun AppAudioPlayer( } } - // Обновление прогресса LaunchedEffect(isPlaying) { while (isPlaying) { currentPosition = exoPlayer.currentPosition @@ -68,81 +75,129 @@ fun AppAudioPlayer( } } - Row( + Column( modifier = modifier .fillMaxWidth() - .padding(vertical = 4.dp), - verticalAlignment = Alignment.CenterVertically + .clip(RoundedCornerShape(12.dp)) + .background(Color.Black.copy(alpha = 0.2f)) + .padding(8.dp) ) { - IconButton( - onClick = { - if (isPlaying) exoPlayer.pause() else exoPlayer.play() - }, - modifier = Modifier.size(32.dp) - ) { - Icon( - imageVector = if (isPlaying) Icons.Default.Pause else Icons.Default.PlayArrow, - contentDescription = null, - tint = contentColor - ) - } - - Column(modifier = Modifier.weight(1f).padding(horizontal = 8.dp)) { - Slider( - value = if (duration > 0) currentPosition.toFloat() / duration.toFloat() else 0f, - onValueChange = { - val newPos = (it * duration).toLong() - exoPlayer.seekTo(newPos) - currentPosition = newPos - }, - modifier = Modifier.height(24.dp), - colors = SliderDefaults.colors( - thumbColor = contentColor, - activeTrackColor = contentColor, - inactiveTrackColor = contentColor.copy(alpha = 0.3f) - ) - ) + if (!isVoiceMessage) { Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.padding(bottom = 4.dp) ) { - Text( - text = formatDuration(currentPosition), - fontSize = 10.sp, - color = contentColor.copy(alpha = 0.7f) + Icon( + Icons.Default.GraphicEq, + contentDescription = null, + tint = contentColor.copy(alpha = 0.7f), + modifier = Modifier.size(16.dp) ) + Spacer(modifier = Modifier.width(4.dp)) Text( - text = formatDuration(duration), - fontSize = 10.sp, - color = contentColor.copy(alpha = 0.7f) + text = fileName, + fontSize = 12.sp, + fontWeight = FontWeight.Bold, + color = contentColor, + maxLines = 1, + modifier = Modifier.weight(1f) ) } } - if (isVoiceMessage) { - TextButton( - onClick = { - playbackSpeed = when (playbackSpeed) { - 1.0f -> 1.5f - 1.5f -> 2.0f - else -> 1.0f - } - exoPlayer.playbackParameters = PlaybackParameters(playbackSpeed) - }, - contentPadding = PaddingValues(0.dp), - modifier = Modifier.width(40.dp) + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Box( + modifier = Modifier + .size(36.dp) + .clip(CircleShape) + .background(Color.White) + .clickable { if (isPlaying) exoPlayer.pause() else exoPlayer.play() }, + contentAlignment = Alignment.Center ) { - Text( - text = "${playbackSpeed}x", - fontSize = 12.sp, - color = contentColor, - style = MaterialTheme.typography.labelSmall + Icon( + imageVector = if (isPlaying) Icons.Default.Pause else Icons.Default.PlayArrow, + contentDescription = null, + tint = Color(0xFF3390EC), + modifier = Modifier.size(24.dp) ) } + + Column( + modifier = Modifier + .weight(1f) + .padding(horizontal = 12.dp) + ) { + Slider( + value = if (duration > 0) currentPosition.toFloat() / duration.toFloat() else 0f, + onValueChange = { + val newPos = (it * duration).toLong() + exoPlayer.seekTo(newPos) + currentPosition = newPos + }, + modifier = Modifier.height(16.dp), + colors = SliderDefaults.colors( + thumbColor = Color.White, + activeTrackColor = Color.White, + inactiveTrackColor = Color.White.copy(alpha = 0.3f) + ) + ) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = formatDuration(currentPosition), + fontSize = 10.sp, + color = contentColor.copy(alpha = 0.7f) + ) + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + text = "3.3 MB", // Mock size + fontSize = 10.sp, + color = contentColor.copy(alpha = 0.7f) + ) + Spacer(modifier = Modifier.width(4.dp)) + Icon( + Icons.Default.Download, + contentDescription = null, + tint = contentColor.copy(alpha = 0.7f), + modifier = Modifier.size(12.dp) + ) + } + } + } + + if (isVoiceMessage) { + Surface( + onClick = { + playbackSpeed = when (playbackSpeed) { + 1.0f -> 1.5f + 1.5f -> 2.0f + else -> 1.0f + } + exoPlayer.playbackParameters = PlaybackParameters(playbackSpeed) + }, + color = Color.White.copy(alpha = 0.2f), + shape = CircleShape, + modifier = Modifier.size(32.dp) + ) { + Box(contentAlignment = Alignment.Center) { + Text( + text = "${if (playbackSpeed % 1.0f == 0.0f) playbackSpeed.toInt() else playbackSpeed}x", + fontSize = 10.sp, + fontWeight = FontWeight.Bold, + color = Color.White + ) + } + } + } } } } + private fun formatDuration(durationMs: Long): String { val totalSeconds = durationMs / 1000 val minutes = totalSeconds / 60 diff --git a/client-mobile/core/presentation/components/AppAvatar.kt b/client-mobile/core/presentation/components/AppAvatar.kt index 72b2837..935c62b 100644 --- a/client-mobile/core/presentation/components/AppAvatar.kt +++ b/client-mobile/core/presentation/components/AppAvatar.kt @@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.size import androidx.compose.material3.* import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -23,14 +24,25 @@ fun AppAvatar( size: Dp = 48.dp, modifier: Modifier = Modifier ) { + val initials = remember(name) { + val words = name.trim().split("\\s+".toRegex()) + if (words.size >= 2) { + (words[0].take(1) + words[1].take(1)).uppercase() + } else if (name.length >= 2) { + name.take(2).uppercase() + } else { + name.take(1).uppercase() + } + } + Box( modifier = modifier .size(size) - .clip(SoftSquareShape) // Тот самый "мягкий квадрат" - .background(MaterialTheme.colorScheme.primary.copy(alpha = 0.1f)), + .clip(SoftSquareShape) + .background(MaterialTheme.colorScheme.primary.copy(alpha = 0.2f)), contentAlignment = Alignment.Center ) { - if (url != null) { + if (!url.isNullOrBlank()) { AsyncImage( model = url, contentDescription = name, @@ -38,13 +50,14 @@ fun AppAvatar( contentScale = ContentScale.Crop ) } else { - // Заглушка, если нет аватара (первая буква имени) Text( - text = name.take(1).uppercase(), + text = initials, color = MaterialTheme.colorScheme.primary, fontSize = (size.value * 0.4).sp, + fontWeight = androidx.compose.ui.text.font.FontWeight.Bold, style = MaterialTheme.typography.titleMedium ) } } } +