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