diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/JetcasterApp.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/JetcasterApp.kt index d028717c35..ece26ca3e3 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/JetcasterApp.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/JetcasterApp.kt @@ -113,7 +113,8 @@ fun JetcasterApp( navigateToPlayer = { episodePlayer -> appState.navigateToPlayer(episodePlayer.uri, backStackEntry) }, - navigateBack = appState::navigateBack + navigateBack = appState::navigateBack, + showBackButton = true, ) } } diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt index 71ed2cfdd9..3d404acedc 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt @@ -66,8 +66,10 @@ import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi +import androidx.compose.material3.adaptive.layout.PaneAdaptedValue import androidx.compose.material3.adaptive.layout.SupportingPaneScaffold import androidx.compose.material3.adaptive.layout.SupportingPaneScaffoldRole +import androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldNavigator import androidx.compose.material3.adaptive.navigation.rememberSupportingPaneScaffoldNavigator import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi import androidx.compose.material3.windowsizeclass.WindowSizeClass @@ -118,6 +120,11 @@ import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.launch +@OptIn(ExperimentalMaterial3AdaptiveApi::class) +private fun ThreePaneScaffoldNavigator.isMainPaneHidden(): Boolean { + return scaffoldValue[SupportingPaneScaffoldRole.Main] == PaneAdaptedValue.Hidden +} + @OptIn(ExperimentalMaterial3AdaptiveApi::class) @Composable fun MainScreen( @@ -154,7 +161,8 @@ fun MainScreen( if (navigator.canNavigateBack()) { navigator.navigateBack() } - } + }, + showBackButton = navigator.isMainPaneHidden(), ) } }, diff --git a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/podcast/PodcastDetailsScreen.kt b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/podcast/PodcastDetailsScreen.kt index 066bf44e72..b24e9d87de 100644 --- a/Jetcaster/app/src/main/java/com/example/jetcaster/ui/podcast/PodcastDetailsScreen.kt +++ b/Jetcaster/app/src/main/java/com/example/jetcaster/ui/podcast/PodcastDetailsScreen.kt @@ -80,6 +80,7 @@ fun PodcastDetailsScreen( viewModel: PodcastDetailsViewModel, navigateToPlayer: (EpisodeInfo) -> Unit, navigateBack: () -> Unit, + showBackButton: Boolean, modifier: Modifier = Modifier ) { val state by viewModel.state.collectAsStateWithLifecycle() @@ -97,6 +98,7 @@ fun PodcastDetailsScreen( onQueueEpisode = viewModel::onQueueEpisode, navigateToPlayer = navigateToPlayer, navigateBack = navigateBack, + showBackButton = showBackButton, modifier = modifier, ) } @@ -118,6 +120,7 @@ fun PodcastDetailsScreen( onQueueEpisode: (PlayerEpisode) -> Unit, navigateToPlayer: (EpisodeInfo) -> Unit, navigateBack: () -> Unit, + showBackButton: Boolean, modifier: Modifier = Modifier ) { val coroutineScope = rememberCoroutineScope() @@ -126,10 +129,12 @@ fun PodcastDetailsScreen( Scaffold( modifier = modifier.fillMaxSize(), topBar = { - PodcastDetailsTopAppBar( - navigateBack = navigateBack, - modifier = Modifier.fillMaxWidth() - ) + if (showBackButton) { + PodcastDetailsTopAppBar( + navigateBack = navigateBack, + modifier = Modifier.fillMaxWidth() + ) + } }, snackbarHost = { SnackbarHost(hostState = snackbarHostState) @@ -352,6 +357,7 @@ fun PodcastDetailsScreenPreview() { toggleSubscribe = { }, onQueueEpisode = { }, navigateToPlayer = { }, - navigateBack = { } + navigateBack = { }, + showBackButton = true, ) }