android: fix unread ack to use latest visible message
This commit is contained in:
@@ -571,7 +571,7 @@ class ChatViewModel @Inject constructor(
|
||||
highlightedMessageId = highlighted,
|
||||
)
|
||||
}
|
||||
acknowledgeLatestIncoming(messages)
|
||||
acknowledgeLatestMessages(messages)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -644,22 +644,20 @@ class ChatViewModel @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun acknowledgeLatestIncoming(messages: List<MessageItem>) {
|
||||
val latestIncoming = messages
|
||||
.asReversed()
|
||||
.firstOrNull { !it.isOutgoing }
|
||||
?: return
|
||||
private fun acknowledgeLatestMessages(messages: List<MessageItem>) {
|
||||
val latestVisible = messages.maxByOrNull { it.id } ?: return
|
||||
val latestIncoming = messages.asReversed().firstOrNull { !it.isOutgoing }
|
||||
|
||||
if (lastDeliveredMessageId != latestIncoming.id) {
|
||||
if (latestIncoming != null && lastDeliveredMessageId != latestIncoming.id) {
|
||||
lastDeliveredMessageId = latestIncoming.id
|
||||
viewModelScope.launch {
|
||||
markMessageDeliveredUseCase(chatId = chatId, messageId = latestIncoming.id)
|
||||
}
|
||||
}
|
||||
if (lastReadMessageId != latestIncoming.id) {
|
||||
lastReadMessageId = latestIncoming.id
|
||||
if (lastReadMessageId != latestVisible.id) {
|
||||
lastReadMessageId = latestVisible.id
|
||||
viewModelScope.launch {
|
||||
markMessageReadUseCase(chatId = chatId, messageId = latestIncoming.id)
|
||||
markMessageReadUseCase(chatId = chatId, messageId = latestVisible.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user