Skip to content

Commit 4a55d6f

Browse files
authored
2 parents 7d350ae + bae0dd7 commit 4a55d6f

File tree

1 file changed

+18
-132
lines changed
  • Jetcaster/mobile/src/main/java/com/example/jetcaster/ui/home

1 file changed

+18
-132
lines changed

Jetcaster/mobile/src/main/java/com/example/jetcaster/ui/home/Home.kt

Lines changed: 18 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import androidx.compose.foundation.layout.padding
3939
import androidx.compose.foundation.layout.size
4040
import androidx.compose.foundation.layout.width
4141
import androidx.compose.foundation.layout.windowInsetsPadding
42-
import androidx.compose.foundation.lazy.LazyColumn
4342
import androidx.compose.foundation.lazy.grid.GridCells
4443
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
4544
import androidx.compose.foundation.pager.HorizontalPager
@@ -77,7 +76,6 @@ import androidx.compose.material3.adaptive.layout.PaneAdaptedValue
7776
import androidx.compose.material3.adaptive.layout.PaneScaffoldDirective
7877
import androidx.compose.material3.adaptive.layout.SupportingPaneScaffold
7978
import androidx.compose.material3.adaptive.layout.SupportingPaneScaffoldRole
80-
import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldValue
8179
import androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldNavigator
8280
import androidx.compose.material3.adaptive.navigation.rememberSupportingPaneScaffoldNavigator
8381
import androidx.compose.material3.adaptive.occludingVerticalHingeBounds
@@ -156,15 +154,6 @@ data class HomeState(
156154
private 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)
169158
private 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
447433
private 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
507491
private 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

Comments
 (0)