Skip to content

Commit 12bce0a

Browse files
Refactor media bar visibility logic in HomeFragment to ensure proper display based on focus and selection state
- fixes #351
1 parent e6b1ed1 commit 12bce0a

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

app/src/main/java/org/jellyfin/androidtv/ui/home/HomeFragment.kt

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ class HomeFragment : Fragment() {
202202
.onEach { trailerState ->
203203
val hasTrailer = trailerState is TrailerPreviewState.Buffering ||
204204
trailerState is TrailerPreviewState.Playing
205-
trailerWebView?.isVisible = hasTrailer
205+
trailerWebView?.isVisible = hasTrailer && shouldShowMediaBar()
206206
}
207207
.launchIn(lifecycleScope)
208208

@@ -221,11 +221,7 @@ class HomeFragment : Fragment() {
221221

222222
private fun updateMediaBarBackground() {
223223
val state = mediaBarViewModel.state.value
224-
val isFocused = mediaBarViewModel.isFocused.value
225-
val selectedPosition = rowsFragment?.selectedPositionFlow?.value ?: -1
226-
227-
val isMediaBarEnabled = userSettingPreferences[UserSettingPreferences.mediaBarEnabled]
228-
val shouldShowMediaBar = isMediaBarEnabled && (isFocused || (selectedPosition == 0) || selectedPosition == -1)
224+
val shouldShowMediaBar = shouldShowMediaBar()
229225

230226
if (state is org.jellyfin.androidtv.ui.home.mediabar.MediaBarState.Ready && shouldShowMediaBar) {
231227
val playbackState = mediaBarViewModel.playbackState.value
@@ -255,6 +251,10 @@ class HomeFragment : Fragment() {
255251
infoRowView?.isVisible = false
256252
summaryView?.isVisible = false
257253
} else {
254+
// Ensure trailer overlay cannot linger when media bar is not active.
255+
mediaBarViewModel.stopTrailer()
256+
trailerWebView?.isVisible = false
257+
258258
backgroundImage?.isVisible = false
259259
logoView?.isVisible = false
260260
titleView?.isVisible = true
@@ -263,6 +263,13 @@ class HomeFragment : Fragment() {
263263
}
264264
}
265265

266+
private fun shouldShowMediaBar(): Boolean {
267+
val isFocused = mediaBarViewModel.isFocused.value
268+
val selectedPosition = rowsFragment?.selectedPositionFlow?.value ?: -1
269+
val isMediaBarEnabled = userSettingPreferences[UserSettingPreferences.mediaBarEnabled]
270+
return isMediaBarEnabled && (isFocused || selectedPosition == 0)
271+
}
272+
266273
/**
267274
* Setup the seasonal surprise effects based on user selection.
268275
* Options: none, winter (❄️), spring (🌸🌼), summer (☀️🏐), fall (🍁🍂)

0 commit comments

Comments
 (0)