@@ -3,6 +3,7 @@ package com.parseable.android.ui.screens.streams
3import androidx.compose.foundation.layout.*
3import androidx.compose.foundation.layout.*
4import androidx.compose.foundation.lazy.LazyColumn
4import androidx.compose.foundation.lazy.LazyColumn
5import androidx.compose.foundation.lazy.items
5import androidx.compose.foundation.lazy.items
6+import androidx.compose.foundation.lazy.rememberLazyListState
6import androidx.compose.material.icons.Icons
7import androidx.compose.material.icons.Icons
7import androidx.compose.material.icons.automirrored.filled.Logout
8import androidx.compose.material.icons.automirrored.filled.Logout
8import androidx.compose.material.icons.filled.*
9import androidx.compose.material.icons.filled.*
@@ -36,6 +37,15 @@ fun StreamsScreen(
36 var searchQuery by remember { mutableStateOf("") }
37 var searchQuery by remember { mutableStateOf("") }
37 val snackbarHostState = remember { SnackbarHostState() }
38 val snackbarHostState = remember { SnackbarHostState() }
40+ val listState = rememberLazyListState()
42+ // Scroll to top when a refresh completes (isLoading transitions to false)
43+ LaunchedEffect(state.isLoading) {
44+ if (!state.isLoading) {
45+ listState.scrollToItem(0)
39 val filteredStreams = remember(state.streams, searchQuery, state.favoriteNames) {
49 val filteredStreams = remember(state.streams, searchQuery, state.favoriteNames) {
40 val favorites = state.favoriteNames
50 val favorites = state.favoriteNames
41 val filtered = if (searchQuery.isBlank()) {
51 val filtered = if (searchQuery.isBlank()) {
@@ -169,6 +179,7 @@ fun StreamsScreen(
171 LazyColumn(
181 LazyColumn(
172 contentPadding = PaddingValues(horizontal = 16.dp, vertical = 8.dp),
183 contentPadding = PaddingValues(horizontal = 16.dp, vertical = 8.dp),
173 verticalArrangement = Arrangement.spacedBy(8.dp),
184 verticalArrangement = Arrangement.spacedBy(8.dp),
174 modifier = Modifier.weight(1f),
185 modifier = Modifier.weight(1f),