From 4fe49a45dcc7676510669a0ec6905563301b7a14 Mon Sep 17 00:00:00 2001 From: andrekir Date: Sat, 13 Jul 2024 08:00:17 -0300 Subject: [PATCH] refactor: improve `LazyColumn` auto-scroll behavior --- .../main/java/com/geeksville/mesh/ui/DebugFragment.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/DebugFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/DebugFragment.kt index 56a1ffe69..b32fc5846 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/DebugFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/DebugFragment.kt @@ -20,7 +20,9 @@ import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.colorResource @@ -79,9 +81,12 @@ class DebugFragment : Fragment() { val listState = rememberLazyListState() val logs by model.meshLog.collectAsStateWithLifecycle() - LaunchedEffect(logs) { - if (listState.firstVisibleItemIndex < 3 && !listState.isScrollInProgress) { - listState.scrollToItem(0) + val shouldAutoScroll by remember { derivedStateOf { listState.firstVisibleItemIndex < 3 } } + if (shouldAutoScroll) { + LaunchedEffect(logs) { + if (!listState.isScrollInProgress) { + listState.scrollToItem(0) + } } }