From 92d1baa930af492a2d994c8ac86ef09d815a6547 Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Wed, 23 Sep 2026 05:56:36 +0000 Subject: [PATCH] request the initial queue scroll and settle it before loading --- .../kotlin/com/subtracks/ui/playback/QueueScreen.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/subtracks/ui/playback/QueueScreen.kt b/app/src/main/kotlin/com/subtracks/ui/playback/QueueScreen.kt index 4bb467aa..85f09d2b 100644 --- a/app/src/main/kotlin/com/subtracks/ui/playback/QueueScreen.kt +++ b/app/src/main/kotlin/com/subtracks/ui/playback/QueueScreen.kt @@ -35,6 +35,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow +import androidx.compose.runtime.withFrameNanos import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -291,13 +292,13 @@ fun QueueScreen( var centered by remember { mutableStateOf(false) } LaunchedEffect(ready, rows.size, currentPosition) { - if (centered || !ready || rows.isEmpty()) return@LaunchedEffect + if (centered || !ready) return@LaunchedEffect val position = currentPosition ?: return@LaunchedEffect val index = rows.indexOfFirst { it.position == position } - if (index < 0) return@LaunchedEffect - snapshotFlow { listState.layoutInfo.totalItemsCount }.first { it > 0 } - listState.scrollToItem(index) - centered = true + if (index >= 0) { + listState.requestScrollToItem(index) + centered = true + } } val reorderState = @@ -311,6 +312,7 @@ fun QueueScreen( LaunchedEffect(listState, centered) { if (!centered) return@LaunchedEffect + withFrameNanos { } snapshotFlow { val info = listState.layoutInfo val firstVisible = info.visibleItemsInfo.firstOrNull()?.index ?: -1