From fcc7755fb5e2b46a9761dd7257062157c9e484ce Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Sun, 18 Jan 2026 19:13:33 +0500 Subject: [PATCH] feat: Update message delivery status logic and improve UI feedback for read messages --- .../messenger/ui/chats/ChatDetailScreen.kt | 4 +- .../messenger/ui/chats/ChatsListScreen.kt | 37 +++++++------------ 2 files changed, 15 insertions(+), 26 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 090ac94..b169212 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 @@ -1591,8 +1591,8 @@ fun ChatDetailScreen( e ) } - // Выходим ПОСЛЕ удаления - onBack() + // Выходим ПОСЛЕ удаления - закрываем клавиатуру + hideKeyboardAndBack() } } ) { Text("Delete", color = Color(0xFFFF3B30)) } diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt index baa9802..b2f29aa 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt @@ -1657,10 +1657,10 @@ fun DialogItemContent( Spacer(modifier = Modifier.width(4.dp)) } else if (dialog.lastMessageFromMe == 1) { // Показываем статус только для исходящих сообщений (кроме Saved Messages) - // 🔥 ЛОГИКА КАК В ДЕСКТОПЕ: - // Если delivered == DELIVERED: - // - unreadCount > 0 → одна галочка (есть непрочитанные входящие, собеседник не ответил) - // - unreadCount == 0 → две галочки (нет непрочитанных, собеседник видел/ответил) + // 🔥 ПРАВИЛЬНАЯ ЛОГИКА: + // - lastMessageRead == 1 → две синие галочки (прочитано собеседником) + // - lastMessageDelivered == 1 && lastMessageRead == 0 → одна галочка (доставлено, но не прочитано) + // - lastMessageDelivered == 0 → одна галочка (отправляется) when { dialog.lastMessageDelivered == 2 -> { // ERROR - показываем иконку ошибки @@ -1672,29 +1672,18 @@ fun DialogItemContent( ) Spacer(modifier = Modifier.width(4.dp)) } - dialog.lastMessageDelivered == 1 -> { - // DELIVERED - смотрим на unreadCount - if (dialog.unreadCount > 0) { - // Есть непрочитанные входящие → одна серая галочка - Icon( - imageVector = Icons.Default.Done, - contentDescription = null, - tint = secondaryTextColor.copy(alpha = 0.6f), - modifier = Modifier.size(16.dp) - ) - } else { - // Нет непрочитанных → две синие галочки (прочитано) - Icon( - imageVector = Icons.Default.DoneAll, - contentDescription = null, - tint = PrimaryBlue, - modifier = Modifier.size(16.dp) - ) - } + dialog.lastMessageRead == 1 -> { + // ПРОЧИТАНО собеседником - две синие галочки + Icon( + imageVector = Icons.Default.DoneAll, + contentDescription = null, + tint = PrimaryBlue, + modifier = Modifier.size(16.dp) + ) Spacer(modifier = Modifier.width(4.dp)) } else -> { - // SENT/WAITING - одна серая галочка + // ДОСТАВЛЕНО или ОТПРАВЛЯЕТСЯ - одна серая галочка Icon( imageVector = Icons.Default.Done, contentDescription = null,