From be0a1821b3dac98488df023e5d843ba9e2e09dd3 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Tue, 13 Jan 2026 02:52:56 +0500 Subject: [PATCH] feat: Remove online indicator from ChatDetailScreen for cleaner UI --- .../messenger/ui/chats/ChatDetailScreen.kt | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt index 67b0c91..c5c8ce2 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt @@ -513,16 +513,6 @@ fun ChatDetailScreen( color = avatarColors.textColor ) } - // 🟢 Online indicator - if (!isSavedMessages && isOnline) { - Box( - modifier = Modifier - .size(12.dp) - .align(Alignment.BottomEnd) - .background(Color(0xFF38B24D), CircleShape) - .border(2.dp, headerBackground, CircleShape) - ) - } } Spacer(modifier = Modifier.width(12.dp)) @@ -776,6 +766,12 @@ fun ChatDetailScreen( itemsIndexed(messagesWithDates, key = { _, item -> item.first.id }) { index, (message, showDate) -> + // Определяем, показывать ли хвостик (последнее сообщение в группе) + val nextMessage = messagesWithDates.getOrNull(index + 1)?.first + val showTail = nextMessage == null || + nextMessage.isOutgoing != message.isOutgoing || + (message.timestamp.time - nextMessage.timestamp.time) > 60_000 // 1 минута + Column { // В reversed layout: дата показывается ПОСЛЕ сообщения // (визуально СВЕРХУ группы сообщений) @@ -788,7 +784,7 @@ fun ChatDetailScreen( MessageBubble( message = message, isDarkTheme = isDarkTheme, - index = index, + showTail = showTail, isSelected = selectedMessages.contains(message.id), onLongClick = { // Toggle selection on long press @@ -1297,7 +1293,7 @@ fun rememberMessageEnterAnimation(messageId: String): Pair { private fun MessageBubble( message: ChatMessage, isDarkTheme: Boolean, - index: Int = 0, + showTail: Boolean = true, isSelected: Boolean = false, onLongClick: () -> Unit = {}, onClick: () -> Unit = {} @@ -1335,13 +1331,13 @@ private fun MessageBubble( if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666) } - // Telegram bubble shape - простая форма с разными радиусами углов + // Telegram bubble shape - хвостик только у последнего сообщения в группе val bubbleShape = RoundedCornerShape( topStart = 18.dp, topEnd = 18.dp, - bottomStart = if (message.isOutgoing) 18.dp else 4.dp, - bottomEnd = if (message.isOutgoing) 4.dp else 18.dp + bottomStart = if (message.isOutgoing) 18.dp else (if (showTail) 4.dp else 18.dp), + bottomEnd = if (message.isOutgoing) (if (showTail) 4.dp else 18.dp) else 18.dp ) val timeFormat = remember { SimpleDateFormat("HH:mm", Locale.getDefault()) }