Skip to content

Commit 82b8a6b

Browse files
UI: remove feed page auto scroll
1 parent 0478da7 commit 82b8a6b

1 file changed

Lines changed: 0 additions & 47 deletions

File tree

library/src/commonMain/kotlin/project/pipepipe/app/ui/screens/playlistdetail/PlaylistDetailScreen.kt

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,6 @@ fun PlaylistDetailScreen(
8383
viewModel.reorderItems(from.index - 1, to.index - 1)
8484
}
8585

86-
// Track first visible item key before refresh to restore scroll position
87-
var firstVisibleItemKey by remember { mutableStateOf<String?>(null) }
88-
var firstVisibleItemOffset by remember { mutableIntStateOf(0) }
89-
9086
val feedWorkState by SharedContext.platformActions.feedWorkState.collectAsState()
9187

9288
val shouldShowMoreMenuButton = !((uiState.playlistType == PlaylistType.FEED
@@ -136,28 +132,6 @@ fun PlaylistDetailScreen(
136132
}
137133
is FeedWorkState.Success, is FeedWorkState.Failed -> {
138134
if (uiState.isRefreshing && uiState.playlistType == PlaylistType.FEED) {
139-
// Save current first visible item before refresh
140-
val isGridEnabled = SharedContext.settingsManager.getBoolean("grid_layout_enabled_key", false)
141-
val firstVisibleItemIndex = if (isGridEnabled) {
142-
gridState.firstVisibleItemIndex
143-
} else {
144-
listState.firstVisibleItemIndex
145-
}
146-
147-
// Account for header items - find the first actual stream item
148-
val headerOffset = 2 // FeedRefreshHeader + PlaylistHeaderSection
149-
val actualItemIndex = (firstVisibleItemIndex - headerOffset).coerceAtLeast(0)
150-
151-
if (actualItemIndex < uiState.displayItems.size) {
152-
val firstVisibleItem = uiState.displayItems[actualItemIndex]
153-
firstVisibleItemKey = firstVisibleItem.url
154-
firstVisibleItemOffset = if (isGridEnabled) {
155-
gridState.firstVisibleItemScrollOffset
156-
} else {
157-
listState.firstVisibleItemScrollOffset
158-
}
159-
}
160-
161135
viewModel.loadPlaylist(url, serviceId)
162136
val feedId = url.substringAfterLast("/").substringBefore("?").toLong()
163137
viewModel.updateFeedLastUpdated(feedId)
@@ -185,27 +159,6 @@ fun PlaylistDetailScreen(
185159
}
186160
}
187161

188-
// Restore scroll position after feed refresh
189-
LaunchedEffect(uiState.displayItems.size, firstVisibleItemKey) {
190-
if (firstVisibleItemKey != null && uiState.playlistType == PlaylistType.FEED) {
191-
val newIndex = uiState.displayItems.indexOfFirst {
192-
it.url == firstVisibleItemKey
193-
}
194-
if (newIndex >= 0) {
195-
val isGridEnabled = SharedContext.settingsManager.getBoolean("grid_layout_enabled_key", false)
196-
val headerOffset = 2 // FeedRefreshHeader + PlaylistHeaderSection
197-
val targetIndex = newIndex + headerOffset
198-
199-
if (isGridEnabled) {
200-
gridState.scrollToItem(targetIndex, firstVisibleItemOffset)
201-
} else {
202-
listState.scrollToItem(targetIndex, firstVisibleItemOffset)
203-
}
204-
// Clear the saved key after restoring
205-
firstVisibleItemKey = null
206-
}
207-
}
208-
}
209162

210163
fun startPlayAll(index: Int = 0, shuffle: Boolean = false) {
211164
SharedContext.platformMediaController!!.playAll(viewModel.sortedItems, index, shuffle)

0 commit comments

Comments
 (0)