diff --git a/app/src/main/java/com/geeksville/mesh/ui/message/MessageList.kt b/app/src/main/java/com/geeksville/mesh/ui/message/MessageList.kt index 9fbaeee57..bab0234b5 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/message/MessageList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/message/MessageList.kt @@ -225,17 +225,15 @@ private fun UpdateUnreadCount( messages: List, 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) } - } + } } }