added logic to stop/pause trailer when sidebar is expanded

This commit is contained in:
tapframe 2026-03-03 02:08:09 +05:30
parent 55ffa02651
commit 2e217ccdd5
3 changed files with 30 additions and 12 deletions

View file

@ -27,6 +27,7 @@ import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.Image
import androidx.compose.foundation.gestures.LocalBringIntoViewSpec
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.compositionLocalOf
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
@ -133,6 +134,8 @@ import coil.request.ImageRequest
import androidx.compose.ui.res.stringResource
import com.nuvio.tv.R
val LocalSidebarExpanded = compositionLocalOf { false }
data class DrawerItem(
val route: String,
val label: String,
@ -694,11 +697,15 @@ private fun LegacySidebarScaffold(
}
}
) {
NuvioNavHost(
navController = navController,
startDestination = startDestination,
hideBuiltInHeaders = hideBuiltInHeaders
)
CompositionLocalProvider(
LocalSidebarExpanded provides (drawerState.currentValue == DrawerValue.Open)
) {
NuvioNavHost(
navController = navController,
startDestination = startDestination,
hideBuiltInHeaders = hideBuiltInHeaders
)
}
}
}
}
@ -1033,11 +1040,15 @@ private fun ModernSidebarScaffold(
}
}
) {
NuvioNavHost(
navController = navController,
startDestination = startDestination,
hideBuiltInHeaders = hideBuiltInHeaders
)
CompositionLocalProvider(
LocalSidebarExpanded provides isSidebarExpanded
) {
NuvioNavHost(
navController = navController,
startDestination = startDestination,
hideBuiltInHeaders = hideBuiltInHeaders
)
}
}
if (showSidebar && (sidebarVisible || sidebarWidth > 0.dp)) {

View file

@ -96,6 +96,7 @@ import com.nuvio.tv.ui.components.ContinueWatchingCard
import com.nuvio.tv.ui.components.ContinueWatchingOptionsDialog
import com.nuvio.tv.ui.components.MonochromePosterPlaceholder
import com.nuvio.tv.ui.components.TrailerPlayer
import com.nuvio.tv.LocalSidebarExpanded
import com.nuvio.tv.ui.theme.NuvioColors
import kotlinx.coroutines.delay
import android.view.KeyEvent as AndroidKeyEvent
@ -121,6 +122,7 @@ fun ModernHomeContent(
onSaveFocusState: (Int, Int, Int, Int, Map<String, Int>) -> Unit
) {
val defaultBringIntoViewSpec = LocalBringIntoViewSpec.current
val isSidebarExpanded = LocalSidebarExpanded.current
val useLandscapePosters = uiState.modernLandscapePostersEnabled
val showCatalogTypeSuffixInModern = uiState.catalogTypeSuffixEnabled
val isLandscapeModern = useLandscapePosters
@ -581,10 +583,12 @@ fun ModernHomeContent(
effectiveAutoplayEnabled,
trailerPlaybackTarget,
heroTrailerUrl,
isVerticalRowsScrolling
isVerticalRowsScrolling,
isSidebarExpanded
) {
derivedStateOf {
effectiveAutoplayEnabled &&
!isSidebarExpanded &&
!isVerticalRowsScrolling &&
trailerPlaybackTarget == FocusedPosterTrailerPlaybackTarget.HERO_MEDIA &&
!heroTrailerUrl.isNullOrBlank()
@ -606,7 +610,7 @@ fun ModernHomeContent(
val catalogBottomPadding = 0.dp
val heroToCatalogGap = 16.dp
val rowTitleBottom = 14.dp
val rowsViewportHeightFraction = if (useLandscapePosters) 0.50f else 0.54f
val rowsViewportHeightFraction = if (useLandscapePosters) 0.49f else 0.52f
val rowsViewportHeight = maxHeight * rowsViewportHeightFraction
val localDensity = LocalDensity.current
val verticalRowBringIntoViewSpec = remember(localDensity, defaultBringIntoViewSpec) {

View file

@ -75,6 +75,7 @@ import com.nuvio.tv.domain.model.MetaPreview
import com.nuvio.tv.ui.components.ContinueWatchingCard
import com.nuvio.tv.ui.components.MonochromePosterPlaceholder
import com.nuvio.tv.ui.components.TrailerPlayer
import com.nuvio.tv.LocalSidebarExpanded
import com.nuvio.tv.ui.theme.NuvioColors
import kotlin.math.abs
import kotlinx.coroutines.flow.distinctUntilChanged
@ -141,8 +142,10 @@ private fun ModernCatalogRowItem(
effectiveExpandEnabled &&
expandedCatalogFocusKey == focusKey &&
!suppressCardExpansionForHeroTrailer
val isSidebarExpanded = LocalSidebarExpanded.current
val playTrailerInExpandedCard =
effectiveAutoplayEnabled &&
!isSidebarExpanded &&
trailerPlaybackTarget == FocusedPosterTrailerPlaybackTarget.EXPANDED_CARD &&
isBackdropExpanded
val trailerPreviewUrl = if (playTrailerInExpandedCard) {