From 8002a2e50f7e8a198801f09fef550c2ed13d0250 Mon Sep 17 00:00:00 2001 From: stylianosgakis Date: Fri, 13 Nov 2026 17:08:07 +0100 Subject: [PATCH] Follow new chat messages after the chat returns from the background After the chat screen had been in the background for more than a few seconds, newly arrived messages stopped being scrolled into view for as long as the screen stayed open. The presenter restarts on return and hands the screen a new LazyPagingItems, but ScrollToBottomEffect kept waiting on the instance it captured when it first launched, so it never saw the new message and timed out. The effect now reads the current list through rememberUpdatedState. --- .../kotlin/com/hedvig/android/feature/chat/ChatLoadedScreen.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/feature/feature-chat/src/main/kotlin/com/hedvig/android/feature/chat/ChatLoadedScreen.kt b/app/feature/feature-chat/src/main/kotlin/com/hedvig/android/feature/chat/ChatLoadedScreen.kt index 0c2679b840..c0ab4dcc75 100644 --- a/app/feature/feature-chat/src/main/kotlin/com/hedvig/android/feature/chat/ChatLoadedScreen.kt +++ b/app/feature/feature-chat/src/main/kotlin/com/hedvig/android/feature/chat/ChatLoadedScreen.kt @@ -397,6 +397,7 @@ private fun ScrollToBottomEffect( messages: LazyPagingItems, ) { val updatedLatestChatMessage by rememberUpdatedState(latestChatMessage) + val updatedMessages by rememberUpdatedState(messages) LaunchedEffect(lazyListState) { snapshotFlow { updatedLatestChatMessage } .filterNotNull() @@ -406,7 +407,7 @@ private fun ScrollToBottomEffect( val idToScrollTo = chatMessage.id withTimeout(1.seconds) { snapshotFlow { - messages.itemSnapshotList + updatedMessages.itemSnapshotList .getOrNull(0) ?.chatMessage ?.id