feat: Update message delivery status logic and improve UI feedback for read messages
This commit is contained in:
@@ -1591,8 +1591,8 @@ fun ChatDetailScreen(
|
||||
e
|
||||
)
|
||||
}
|
||||
// Выходим ПОСЛЕ удаления
|
||||
onBack()
|
||||
// Выходим ПОСЛЕ удаления - закрываем клавиатуру
|
||||
hideKeyboardAndBack()
|
||||
}
|
||||
}
|
||||
) { Text("Delete", color = Color(0xFFFF3B30)) }
|
||||
|
||||
@@ -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 {
|
||||
// Нет непрочитанных → две синие галочки (прочитано)
|
||||
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,
|
||||
|
||||
Reference in New Issue
Block a user