feat: Add logging for message read status updates and improve message delivery status handling
This commit is contained in:
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user