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

This commit is contained in:
Jeremiah K
2025-06-25 10:52:22 -05:00
committed by GitHub
parent 9b041b8819
commit 40807bc69a

View File

@@ -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)
}
}
}
}
}