fix: unread message count not updating when opening conversations (#2239)

pull/2237/head^2
Jeremiah K 2025-06-25 10:52:22 -05:00 zatwierdzone przez GitHub
rodzic 9b041b8819
commit 40807bc69a
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
1 zmienionych plików z 9 dodań i 11 usunięć

Wyświetl plik

@ -225,17 +225,15 @@ private fun UpdateUnreadCount(
messages: List<Message>,
onUnreadChanged: (Long) -> Unit,
) {
val unreadIndex by remember { derivedStateOf { messages.indexOfLast { !it.read } } }
val firstVisibleItemIndex by remember { derivedStateOf { listState.firstVisibleItemIndex } }
if (unreadIndex != -1 && firstVisibleItemIndex != -1 && firstVisibleItemIndex <= unreadIndex) {
LaunchedEffect(firstVisibleItemIndex, unreadIndex) {
snapshotFlow { listState.firstVisibleItemIndex }
.debounce(timeoutMillis = 500L)
.collectLatest { index ->
val lastVisibleItem = messages[index]
onUnreadChanged(lastVisibleItem.receivedTime)
LaunchedEffect(messages) {
snapshotFlow { listState.firstVisibleItemIndex }
.debounce(timeoutMillis = 500L)
.collectLatest { index ->
val lastUnreadIndex = messages.indexOfLast { !it.read }
if (lastUnreadIndex != -1 && index <= lastUnreadIndex && index < messages.size) {
val visibleMessage = messages[index]
onUnreadChanged(visibleMessage.receivedTime)
}
}
}
}
}