@@ -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