@@ -39,7 +39,6 @@ import androidx.compose.foundation.layout.padding
3939import androidx.compose.foundation.layout.size
4040import androidx.compose.foundation.layout.width
4141import androidx.compose.foundation.layout.windowInsetsPadding
42- import androidx.compose.foundation.lazy.LazyColumn
4342import androidx.compose.foundation.lazy.grid.GridCells
4443import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
4544import androidx.compose.foundation.pager.HorizontalPager
@@ -77,7 +76,6 @@ import androidx.compose.material3.adaptive.layout.PaneAdaptedValue
7776import androidx.compose.material3.adaptive.layout.PaneScaffoldDirective
7877import androidx.compose.material3.adaptive.layout.SupportingPaneScaffold
7978import androidx.compose.material3.adaptive.layout.SupportingPaneScaffoldRole
80- import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldValue
8179import androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldNavigator
8280import androidx.compose.material3.adaptive.navigation.rememberSupportingPaneScaffoldNavigator
8381import androidx.compose.material3.adaptive.occludingVerticalHingeBounds
@@ -156,15 +154,6 @@ data class HomeState(
156154private val HomeState .showHomeCategoryTabs: Boolean
157155 get() = featuredPodcasts.isNotEmpty() && homeCategories.isNotEmpty()
158156
159- @OptIn(ExperimentalMaterial3AdaptiveApi ::class )
160- private fun HomeState.showGrid (
161- scaffoldValue : ThreePaneScaffoldValue
162- ): Boolean = windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass .EXPANDED ||
163- (
164- windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass .MEDIUM &&
165- scaffoldValue[SupportingPaneScaffoldRole .Supporting ] == PaneAdaptedValue .Hidden
166- )
167-
168157@OptIn(ExperimentalMaterial3AdaptiveApi ::class )
169158private fun <T > ThreePaneScaffoldNavigator<T>.isMainPaneHidden (): Boolean {
170159 return scaffoldValue[SupportingPaneScaffoldRole .Main ] == PaneAdaptedValue .Hidden
@@ -333,11 +322,9 @@ private fun HomeScreenReady(
333322
334323 Surface {
335324 val podcastUri = navigator.currentDestination?.content
336- val showGrid = homeState.showGrid(navigator.scaffoldValue)
337325 if (podcastUri.isNullOrEmpty()) {
338326 HomeScreen (
339327 homeState = homeState,
340- showGrid = showGrid,
341328 modifier = Modifier .fillMaxSize()
342329 )
343330 } else {
@@ -365,7 +352,6 @@ private fun HomeScreenReady(
365352 mainPane = {
366353 HomeScreen (
367354 homeState = homeState,
368- showGrid = showGrid,
369355 modifier = Modifier .fillMaxSize()
370356 )
371357 },
@@ -446,7 +432,6 @@ private fun HomeScreenBackground(
446432@Composable
447433private fun HomeScreen (
448434 homeState : HomeState ,
449- showGrid : Boolean ,
450435 modifier : Modifier = Modifier
451436) {
452437 // Effect that changes the home category selection when there are no subscribed podcasts
@@ -476,7 +461,6 @@ private fun HomeScreen(
476461 // Main Content
477462 val snackBarText = stringResource(id = R .string.episode_added_to_your_queue)
478463 HomeContent (
479- showGrid = showGrid,
480464 showHomeCategoryTabs = homeState.showHomeCategoryTabs,
481465 featuredPodcasts = homeState.featuredPodcasts,
482466 selectedHomeCategory = homeState.selectedHomeCategory,
@@ -505,7 +489,6 @@ private fun HomeScreen(
505489
506490@Composable
507491private fun HomeContent (
508- showGrid : Boolean ,
509492 showHomeCategoryTabs : Boolean ,
510493 featuredPodcasts : PersistentList <PodcastInfo >,
511494 selectedHomeCategory : HomeCategory ,
@@ -532,120 +515,24 @@ private fun HomeContent(
532515 }
533516 }
534517
535- // Note: ideally, `HomeContentColumn` and `HomeContentGrid` would be the same implementation
536- // (i.e. a grid). However, LazyVerticalGrid does not have the concept of a sticky header.
537- // So we are using two different composables here depending on the provided window size class.
538- // See: https://issuetracker.google.com/issues/231557184
539- if (showGrid) {
540- HomeContentGrid (
541- pagerState = pagerState,
542- showHomeCategoryTabs = showHomeCategoryTabs,
543- featuredPodcasts = featuredPodcasts,
544- selectedHomeCategory = selectedHomeCategory,
545- homeCategories = homeCategories,
546- filterableCategoriesModel = filterableCategoriesModel,
547- podcastCategoryFilterResult = podcastCategoryFilterResult,
548- library = library,
549- modifier = modifier,
550- onPodcastUnfollowed = onPodcastUnfollowed,
551- onHomeCategorySelected = onHomeCategorySelected,
552- onCategorySelected = onCategorySelected,
553- navigateToPodcastDetails = navigateToPodcastDetails,
554- navigateToPlayer = navigateToPlayer,
555- onTogglePodcastFollowed = onTogglePodcastFollowed,
556- onQueueEpisode = onQueueEpisode,
557- )
558- } else {
559- HomeContentColumn (
560- pagerState = pagerState,
561- showHomeCategoryTabs = showHomeCategoryTabs,
562- featuredPodcasts = featuredPodcasts,
563- selectedHomeCategory = selectedHomeCategory,
564- homeCategories = homeCategories,
565- filterableCategoriesModel = filterableCategoriesModel,
566- podcastCategoryFilterResult = podcastCategoryFilterResult,
567- library = library,
568- modifier = modifier,
569- onPodcastUnfollowed = onPodcastUnfollowed,
570- onHomeCategorySelected = onHomeCategorySelected,
571- onCategorySelected = onCategorySelected,
572- navigateToPodcastDetails = navigateToPodcastDetails,
573- navigateToPlayer = navigateToPlayer,
574- onTogglePodcastFollowed = onTogglePodcastFollowed,
575- onQueueEpisode = onQueueEpisode,
576- )
577- }
578- }
579-
580- @OptIn(ExperimentalFoundationApi ::class )
581- @Composable
582- private fun HomeContentColumn (
583- showHomeCategoryTabs : Boolean ,
584- pagerState : PagerState ,
585- featuredPodcasts : PersistentList <PodcastInfo >,
586- selectedHomeCategory : HomeCategory ,
587- homeCategories : List <HomeCategory >,
588- filterableCategoriesModel : FilterableCategoriesModel ,
589- podcastCategoryFilterResult : PodcastCategoryFilterResult ,
590- library : LibraryInfo ,
591- modifier : Modifier = Modifier ,
592- onPodcastUnfollowed : (PodcastInfo ) -> Unit ,
593- onHomeCategorySelected : (HomeCategory ) -> Unit ,
594- onCategorySelected : (CategoryInfo ) -> Unit ,
595- navigateToPodcastDetails : (PodcastInfo ) -> Unit ,
596- navigateToPlayer : (EpisodeInfo ) -> Unit ,
597- onTogglePodcastFollowed : (PodcastInfo ) -> Unit ,
598- onQueueEpisode : (PlayerEpisode ) -> Unit ,
599- ) {
600- LazyColumn (
601- modifier = modifier.fillMaxSize()
602- ) {
603- if (featuredPodcasts.isNotEmpty()) {
604- item {
605- FollowedPodcastItem (
606- pagerState = pagerState,
607- items = featuredPodcasts,
608- onPodcastUnfollowed = onPodcastUnfollowed,
609- navigateToPodcastDetails = navigateToPodcastDetails,
610- modifier = Modifier
611- .fillMaxWidth()
612- )
613- }
614- }
615-
616- if (showHomeCategoryTabs) {
617- item {
618- HomeCategoryTabs (
619- categories = homeCategories,
620- selectedCategory = selectedHomeCategory,
621- showHorizontalLine = true ,
622- onCategorySelected = onHomeCategorySelected
623- )
624- }
625- }
626-
627- when (selectedHomeCategory) {
628- HomeCategory .Library -> {
629- libraryItems(
630- library = library,
631- navigateToPlayer = navigateToPlayer,
632- onQueueEpisode = onQueueEpisode
633- )
634- }
635-
636- HomeCategory .Discover -> {
637- discoverItems(
638- filterableCategoriesModel = filterableCategoriesModel,
639- podcastCategoryFilterResult = podcastCategoryFilterResult,
640- navigateToPodcastDetails = navigateToPodcastDetails,
641- navigateToPlayer = navigateToPlayer,
642- onCategorySelected = onCategorySelected,
643- onTogglePodcastFollowed = onTogglePodcastFollowed,
644- onQueueEpisode = onQueueEpisode
645- )
646- }
647- }
648- }
518+ HomeContentGrid (
519+ pagerState = pagerState,
520+ showHomeCategoryTabs = showHomeCategoryTabs,
521+ featuredPodcasts = featuredPodcasts,
522+ selectedHomeCategory = selectedHomeCategory,
523+ homeCategories = homeCategories,
524+ filterableCategoriesModel = filterableCategoriesModel,
525+ podcastCategoryFilterResult = podcastCategoryFilterResult,
526+ library = library,
527+ modifier = modifier,
528+ onPodcastUnfollowed = onPodcastUnfollowed,
529+ onHomeCategorySelected = onHomeCategorySelected,
530+ onCategorySelected = onCategorySelected,
531+ navigateToPodcastDetails = navigateToPodcastDetails,
532+ navigateToPlayer = navigateToPlayer,
533+ onTogglePodcastFollowed = onTogglePodcastFollowed,
534+ onQueueEpisode = onQueueEpisode,
535+ )
649536}
650537
651538@Composable
@@ -952,7 +839,6 @@ private fun PreviewHome() {
952839 )
953840 HomeScreen (
954841 homeState = homeState,
955- showGrid = false
956842 )
957843 }
958844}
0 commit comments