diff --git a/app/src/main/java/net/jeena/jtubetv/ui/screens/HomeRows.kt b/app/src/main/java/net/jeena/jtubetv/ui/screens/HomeRows.kt index 97aa411..dbd71d4 100644 --- a/app/src/main/java/net/jeena/jtubetv/ui/screens/HomeRows.kt +++ b/app/src/main/java/net/jeena/jtubetv/ui/screens/HomeRows.kt @@ -78,9 +78,10 @@ class HomeRowsViewModel(private val repository: PeerTubeRepository) : ViewModel( fetchContinue() } - /** Re-fetch after playback changed server-side positions (UX report BUG-7). */ + /** Re-fetch after playback changed server-side positions (UX report BUG-7). + * Keeps the current rows in place while re-fetching (clearing them disposed + * the rows and killed the focus-restore effect before it could run, #2). */ fun refresh() { - continueItems = emptyList() loaded = true fetchContinue() fetchSubs() diff --git a/app/src/main/java/net/jeena/jtubetv/ui/screens/HomeScreen.kt b/app/src/main/java/net/jeena/jtubetv/ui/screens/HomeScreen.kt index baa5f2a..4efb9a0 100644 --- a/app/src/main/java/net/jeena/jtubetv/ui/screens/HomeScreen.kt +++ b/app/src/main/java/net/jeena/jtubetv/ui/screens/HomeScreen.kt @@ -87,8 +87,14 @@ fun HomeScreen(viewModel: AppViewModel = androidx.lifecycle.viewmodel.compose.vi // After BACK from the player: bump the restore token so lists re-focus the opened // card and re-fetch positions (UX report BUG-3 + BUG-7). + var hadPlaying by rememberSaveable { mutableStateOf(false) } LaunchedEffect(playingVideo) { - if (playingVideo == null && restoreToken >= 1) restoreToken++ + if (playingVideo != null) { + hadPlaying = true + } else if (hadPlaying) { + restoreToken++ + hadPlaying = false + } } // BACK order (TV standard): player (own handler) → drawer close → channel