feat: Update message delivery status logic and improve UI feedback for read messages

This commit is contained in:
k1ngsterr1
2026-01-18 19:13:33 +05:00
parent 4393fa9036
commit fcc7755fb5
2 changed files with 15 additions and 26 deletions

View File

@@ -1591,8 +1591,8 @@ fun ChatDetailScreen(
e e
) )
} }
// Выходим ПОСЛЕ удаления // Выходим ПОСЛЕ удаления - закрываем клавиатуру
onBack() hideKeyboardAndBack()
} }
} }
) { Text("Delete", color = Color(0xFFFF3B30)) } ) { Text("Delete", color = Color(0xFFFF3B30)) }

View File

@@ -1657,10 +1657,10 @@ fun DialogItemContent(
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
} else if (dialog.lastMessageFromMe == 1) { } else if (dialog.lastMessageFromMe == 1) {
// Показываем статус только для исходящих сообщений (кроме Saved Messages) // Показываем статус только для исходящих сообщений (кроме Saved Messages)
// 🔥 ЛОГИКА КАК В ДЕСКТОПЕ: // 🔥 ПРАВИЛЬНАЯ ЛОГИКА:
// Если delivered == DELIVERED: // - lastMessageRead == 1 → две синие галочки (прочитано собеседником)
// - unreadCount > 0 → одна галочка (есть непрочитанные входящие, собеседник не ответил) // - lastMessageDelivered == 1 && lastMessageRead == 0 → одна галочка (доставлено, но не прочитано)
// - unreadCount == 0 → две галочки (нет непрочитанных, собеседник видел/ответил) // - lastMessageDelivered == 0 → одна галочка (отправляется)
when { when {
dialog.lastMessageDelivered == 2 -> { dialog.lastMessageDelivered == 2 -> {
// ERROR - показываем иконку ошибки // ERROR - показываем иконку ошибки
@@ -1672,29 +1672,18 @@ fun DialogItemContent(
) )
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
} }
dialog.lastMessageDelivered == 1 -> { dialog.lastMessageRead == 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( Icon(
imageVector = Icons.Default.DoneAll, imageVector = Icons.Default.DoneAll,
contentDescription = null, contentDescription = null,
tint = PrimaryBlue, tint = PrimaryBlue,
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
) )
}
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
} }
else -> { else -> {
// SENT/WAITING - одна серая галочка // ДОСТАВЛЕНО или ОТПРАВЛЯЕТСЯ - одна серая галочка
Icon( Icon(
imageVector = Icons.Default.Done, imageVector = Icons.Default.Done,
contentDescription = null, contentDescription = null,