feat: Add logging for message read status updates and improve message delivery status handling

This commit is contained in:
k1ngsterr1
2026-01-18 19:02:53 +05:00
parent f7e63dbee1
commit 988494ca9c

View File

@@ -1646,64 +1646,62 @@ fun DialogItemContent(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.End horizontalArrangement = Arrangement.End
) { ) {
// Показываем статус только для исходящих сообщений // 📁 Для Saved Messages ВСЕГДА показываем синие двойные галочки (прочитано)
if (dialog.lastMessageFromMe == 1) { if (dialog.isSavedMessages) {
// 📁 Для Saved Messages всегда синие двойные галочки (прочитано) Icon(
if (dialog.isSavedMessages) { imageVector = Icons.Default.DoneAll,
Icon( contentDescription = null,
imageVector = Icons.Default.DoneAll, tint = PrimaryBlue,
contentDescription = null, modifier = Modifier.size(16.dp)
tint = PrimaryBlue, )
modifier = Modifier.size(16.dp) Spacer(modifier = Modifier.width(4.dp))
) } else if (dialog.lastMessageFromMe == 1) {
Spacer(modifier = Modifier.width(4.dp)) // Показываем статус только для исходящих сообщений (кроме Saved Messages)
} else { // 🔥 ЛОГИКА КАК В ДЕСКТОПЕ:
// 🔥 ЛОГИКА КАК В ДЕСКТОПЕ: // Если delivered == DELIVERED:
// Если delivered == DELIVERED: // - unreadCount > 0 → одна галочка (есть непрочитанные входящие, собеседник не ответил)
// - unreadCount > 0 → одна галочка (есть непрочитанные входящие, собеседник не ответил) // - unreadCount == 0 → две галочки (нет непрочитанных, собеседник видел/ответил)
// - unreadCount == 0 → две галочки (нет непрочитанных, собеседник видел/ответил) when {
when { dialog.lastMessageDelivered == 2 -> {
dialog.lastMessageDelivered == 2 -> { // ERROR - показываем иконку ошибки
// ERROR - показываем иконку ошибки Icon(
Icon( imageVector = Icons.Outlined.ErrorOutline,
imageVector = Icons.Outlined.ErrorOutline, contentDescription = "Sending failed",
contentDescription = "Sending failed", tint = Color(0xFFFF3B30), // iOS красный
tint = Color(0xFFFF3B30), // iOS красный modifier = Modifier.size(16.dp)
modifier = Modifier.size(16.dp) )
) Spacer(modifier = Modifier.width(4.dp))
Spacer(modifier = Modifier.width(4.dp)) }
} dialog.lastMessageDelivered == 1 -> {
dialog.lastMessageDelivered == 1 -> { // DELIVERED - смотрим на unreadCount
// DELIVERED - смотрим на unreadCount if (dialog.unreadCount > 0) {
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)
)
}
Spacer(modifier = Modifier.width(4.dp))
}
else -> {
// SENT/WAITING - одна серая галочка
Icon( Icon(
imageVector = Icons.Default.Done, imageVector = Icons.Default.Done,
contentDescription = null, contentDescription = null,
tint = secondaryTextColor.copy(alpha = 0.6f), tint = secondaryTextColor.copy(alpha = 0.6f),
modifier = Modifier.size(16.dp) modifier = Modifier.size(16.dp)
) )
Spacer(modifier = Modifier.width(4.dp)) } else {
// Нет непрочитанных → две синие галочки (прочитано)
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,
tint = secondaryTextColor.copy(alpha = 0.6f),
modifier = Modifier.size(16.dp)
)
Spacer(modifier = Modifier.width(4.dp))
} }
} }
} }