From 644bf51aff62d4e8edc7c3d27bb15d0d87b96716 Mon Sep 17 00:00:00 2001 From: Ray <154766448+damontecres@users.noreply.github.com> Date: Thu, 18 Dec 2025 14:01:21 -0500 Subject: [PATCH] Fix backdrop not clearing between tabs (#500) ## Description Follow up to #476 to clear the backdrop when switching tabs ### Related issues Fixes #499 --- .../wholphin/ui/detail/CollectionFolderLiveTv.kt | 3 +++ .../wholphin/ui/detail/CollectionFolderMovie.kt | 1 + .../damontecres/wholphin/ui/detail/CollectionFolderTv.kt | 1 + .../damontecres/wholphin/ui/detail/FavoritesPage.kt | 1 + .../wholphin/ui/detail/series/SeriesOverview.kt | 8 -------- .../wholphin/ui/detail/series/SeriesOverviewContent.kt | 1 - .../wholphin/ui/preferences/PreferencesViewModel.kt | 2 ++ 7 files changed, 8 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderLiveTv.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderLiveTv.kt index a006b168..2b69c105 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderLiveTv.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderLiveTv.kt @@ -31,6 +31,7 @@ import com.github.damontecres.wholphin.data.ServerRepository import com.github.damontecres.wholphin.data.model.BaseItem import com.github.damontecres.wholphin.data.model.GetItemsFilter import com.github.damontecres.wholphin.preferences.UserPreferences +import com.github.damontecres.wholphin.services.BackdropService import com.github.damontecres.wholphin.services.NavigationManager import com.github.damontecres.wholphin.ui.components.CollectionFolderGrid import com.github.damontecres.wholphin.ui.components.ErrorMessage @@ -59,6 +60,7 @@ class LiveTvCollectionViewModel val serverRepository: ServerRepository, val navigationManager: NavigationManager, val rememberTabManager: RememberTabManager, + val backdropService: BackdropService, ) : ViewModel(), RememberTabManager by rememberTabManager { val recordingFolders = MutableLiveData>() @@ -106,6 +108,7 @@ fun CollectionFolderLiveTv( LaunchedEffect(selectedTabIndex) { logTab("livetv", selectedTabIndex) viewModel.saveRememberedTab(preferences, destination.itemId, selectedTabIndex) + viewModel.backdropService.clearBackdrop() } val onClickItem = { position: Int, item: BaseItem -> viewModel.navigationManager.navigateTo(item.destination()) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderMovie.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderMovie.kt index 1fad983d..798683aa 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderMovie.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderMovie.kt @@ -65,6 +65,7 @@ fun CollectionFolderMovie( LaunchedEffect(selectedTabIndex) { logTab("movie", selectedTabIndex) preferencesViewModel.saveRememberedTab(preferences, destination.itemId, selectedTabIndex) + preferencesViewModel.backdropService.clearBackdrop() } var showHeader by rememberSaveable { mutableStateOf(true) } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderTv.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderTv.kt index e3fae08e..b32189d4 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderTv.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderTv.kt @@ -64,6 +64,7 @@ fun CollectionFolderTv( LaunchedEffect(selectedTabIndex) { logTab("tv", selectedTabIndex) preferencesViewModel.saveRememberedTab(preferences, destination.itemId, selectedTabIndex) + preferencesViewModel.backdropService.clearBackdrop() } val onClickItem = { item: BaseItem -> diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/FavoritesPage.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/FavoritesPage.kt index dff167c1..5157f7d7 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/FavoritesPage.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/FavoritesPage.kt @@ -82,6 +82,7 @@ fun FavoritesPage( NavDrawerItem.Favorites.id, selectedTabIndex, ) + preferencesViewModel.backdropService.clearBackdrop() } var showHeader by rememberSaveable { mutableStateOf(true) } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverview.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverview.kt index d5520c87..73f489c1 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverview.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverview.kt @@ -46,7 +46,6 @@ import com.github.damontecres.wholphin.util.LoadingState import kotlinx.serialization.Serializable import kotlinx.serialization.UseSerializers import org.jellyfin.sdk.model.api.BaseItemKind -import org.jellyfin.sdk.model.api.ImageType import org.jellyfin.sdk.model.api.MediaType import org.jellyfin.sdk.model.api.PersonKind import org.jellyfin.sdk.model.extensions.ticks @@ -298,13 +297,6 @@ fun SeriesOverview( chosenStreams = chosenStreams, peopleInEpisode = peopleInEpisode, position = position, - backdropImageUrl = - remember { - viewModel.imageUrl( - series.id, - ImageType.BACKDROP, - ) - }, firstItemFocusRequester = firstItemFocusRequester, episodeRowFocusRequester = episodeRowFocusRequester, castCrewRowFocusRequester = castCrewRowFocusRequester, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverviewContent.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverviewContent.kt index ecb06efb..fa225688 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverviewContent.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverviewContent.kt @@ -74,7 +74,6 @@ fun SeriesOverviewContent( chosenStreams: ChosenStreams?, peopleInEpisode: List, position: SeriesOverviewPosition, - backdropImageUrl: String?, firstItemFocusRequester: FocusRequester, episodeRowFocusRequester: FocusRequester, castCrewRowFocusRequester: FocusRequester, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesViewModel.kt index 6f4ea0dd..d1e2baa2 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/preferences/PreferencesViewModel.kt @@ -15,6 +15,7 @@ import com.github.damontecres.wholphin.data.model.NavPinType import com.github.damontecres.wholphin.preferences.AppPreferences import com.github.damontecres.wholphin.preferences.resetSubtitles import com.github.damontecres.wholphin.preferences.updateSubtitlePreferences +import com.github.damontecres.wholphin.services.BackdropService import com.github.damontecres.wholphin.services.NavigationManager import com.github.damontecres.wholphin.ui.detail.DebugViewModel.Companion.sendAppLogs import com.github.damontecres.wholphin.ui.launchIO @@ -37,6 +38,7 @@ class PreferencesViewModel private val api: ApiClient, val preferenceDataStore: DataStore, val navigationManager: NavigationManager, + val backdropService: BackdropService, private val rememberTabManager: RememberTabManager, private val serverRepository: ServerRepository, private val navDrawerItemRepository: NavDrawerItemRepository,