@@ -106,13 +106,11 @@ import com.example.jetcaster.R
106106import com.example.jetcaster.core.domain.testing.PreviewCategories
107107import com.example.jetcaster.core.domain.testing.PreviewPodcastEpisodes
108108import com.example.jetcaster.core.domain.testing.PreviewPodcasts
109- import com.example.jetcaster.core.model.CategoryInfo
110109import com.example.jetcaster.core.model.EpisodeInfo
111110import com.example.jetcaster.core.model.FilterableCategoriesModel
112111import com.example.jetcaster.core.model.LibraryInfo
113112import com.example.jetcaster.core.model.PodcastCategoryFilterResult
114113import com.example.jetcaster.core.model.PodcastInfo
115- import com.example.jetcaster.core.player.model.PlayerEpisode
116114import com.example.jetcaster.designsystem.component.PodcastImage
117115import com.example.jetcaster.ui.home.discover.discoverItems
118116import com.example.jetcaster.ui.home.library.libraryItems
@@ -282,16 +280,11 @@ private fun HomeScreenReady(
282280 filterableCategoriesModel = uiState.filterableCategoriesModel,
283281 podcastCategoryFilterResult = uiState.podcastCategoryFilterResult,
284282 library = uiState.library,
285- onHomeCategorySelected = viewModel::onHomeCategorySelected,
286- onCategorySelected = viewModel::onCategorySelected,
287- onPodcastUnfollowed = viewModel::onPodcastUnfollowed,
283+ onHomeAction = viewModel::onHomeAction,
288284 navigateToPodcastDetails = {
289285 navigator.navigateTo(SupportingPaneScaffoldRole .Supporting , it.uri)
290286 },
291287 navigateToPlayer = navigateToPlayer,
292- onTogglePodcastFollowed = viewModel::onTogglePodcastFollowed,
293- onLibraryPodcastSelected = viewModel::onLibraryPodcastSelected,
294- onQueueEpisode = viewModel::onQueueEpisode,
295288 modifier = Modifier .fillMaxSize()
296289 )
297290 }
@@ -409,20 +402,15 @@ private fun HomeScreen(
409402 filterableCategoriesModel : FilterableCategoriesModel ,
410403 podcastCategoryFilterResult : PodcastCategoryFilterResult ,
411404 library : LibraryInfo ,
412- onPodcastUnfollowed : (PodcastInfo ) -> Unit ,
413- onHomeCategorySelected : (HomeCategory ) -> Unit ,
414- onCategorySelected : (CategoryInfo ) -> Unit ,
405+ onHomeAction : (HomeAction ) -> Unit ,
415406 navigateToPodcastDetails : (PodcastInfo ) -> Unit ,
416407 navigateToPlayer : (EpisodeInfo ) -> Unit ,
417- onTogglePodcastFollowed : (PodcastInfo ) -> Unit ,
418- onLibraryPodcastSelected : (PodcastInfo ? ) -> Unit ,
419- onQueueEpisode : (PlayerEpisode ) -> Unit ,
420408 modifier : Modifier = Modifier
421409) {
422410 // Effect that changes the home category selection when there are no subscribed podcasts
423411 LaunchedEffect (key1 = featuredPodcasts) {
424412 if (featuredPodcasts.isEmpty()) {
425- onHomeCategorySelected( HomeCategory .Discover )
413+ onHomeAction( HomeAction . HomeCategorySelected ( HomeCategory .Discover ) )
426414 }
427415 }
428416
@@ -464,19 +452,16 @@ private fun HomeScreen(
464452 podcastCategoryFilterResult = podcastCategoryFilterResult,
465453 library = library,
466454 modifier = Modifier .padding(contentPadding),
467- onPodcastUnfollowed = onPodcastUnfollowed,
468- onHomeCategorySelected = onHomeCategorySelected,
469- onCategorySelected = onCategorySelected,
455+ onHomeAction = { action ->
456+ if (action is HomeAction .QueueEpisode ) {
457+ coroutineScope.launch {
458+ snackbarHostState.showSnackbar(snackBarText)
459+ }
460+ }
461+ onHomeAction(action)
462+ },
470463 navigateToPodcastDetails = navigateToPodcastDetails,
471464 navigateToPlayer = navigateToPlayer,
472- onTogglePodcastFollowed = onTogglePodcastFollowed,
473- onLibraryPodcastSelected = onLibraryPodcastSelected,
474- onQueueEpisode = {
475- coroutineScope.launch {
476- snackbarHostState.showSnackbar(snackBarText)
477- }
478- onQueueEpisode(it)
479- }
480465 )
481466 }
482467 }
@@ -492,21 +477,16 @@ private fun HomeContent(
492477 podcastCategoryFilterResult : PodcastCategoryFilterResult ,
493478 library : LibraryInfo ,
494479 modifier : Modifier = Modifier ,
495- onPodcastUnfollowed : (PodcastInfo ) -> Unit ,
496- onHomeCategorySelected : (HomeCategory ) -> Unit ,
497- onCategorySelected : (CategoryInfo ) -> Unit ,
480+ onHomeAction : (HomeAction ) -> Unit ,
498481 navigateToPodcastDetails : (PodcastInfo ) -> Unit ,
499482 navigateToPlayer : (EpisodeInfo ) -> Unit ,
500- onTogglePodcastFollowed : (PodcastInfo ) -> Unit ,
501- onLibraryPodcastSelected : (PodcastInfo ? ) -> Unit ,
502- onQueueEpisode : (PlayerEpisode ) -> Unit ,
503483) {
504484 val pagerState = rememberPagerState { featuredPodcasts.size }
505485 LaunchedEffect (pagerState, featuredPodcasts) {
506486 snapshotFlow { pagerState.currentPage }
507487 .collect {
508488 val podcast = featuredPodcasts.getOrNull(it)
509- onLibraryPodcastSelected( podcast)
489+ onHomeAction( HomeAction . LibraryPodcastSelected ( podcast) )
510490 }
511491 }
512492
@@ -520,13 +500,9 @@ private fun HomeContent(
520500 podcastCategoryFilterResult = podcastCategoryFilterResult,
521501 library = library,
522502 modifier = modifier,
523- onPodcastUnfollowed = onPodcastUnfollowed,
524- onHomeCategorySelected = onHomeCategorySelected,
525- onCategorySelected = onCategorySelected,
503+ onHomeAction = onHomeAction,
526504 navigateToPodcastDetails = navigateToPodcastDetails,
527505 navigateToPlayer = navigateToPlayer,
528- onTogglePodcastFollowed = onTogglePodcastFollowed,
529- onQueueEpisode = onQueueEpisode,
530506 )
531507}
532508
@@ -541,13 +517,9 @@ private fun HomeContentGrid(
541517 podcastCategoryFilterResult : PodcastCategoryFilterResult ,
542518 library : LibraryInfo ,
543519 modifier : Modifier = Modifier ,
544- onHomeCategorySelected : (HomeCategory ) -> Unit ,
545- onPodcastUnfollowed : (PodcastInfo ) -> Unit ,
546- onCategorySelected : (CategoryInfo ) -> Unit ,
520+ onHomeAction : (HomeAction ) -> Unit ,
547521 navigateToPodcastDetails : (PodcastInfo ) -> Unit ,
548522 navigateToPlayer : (EpisodeInfo ) -> Unit ,
549- onTogglePodcastFollowed : (PodcastInfo ) -> Unit ,
550- onQueueEpisode : (PlayerEpisode ) -> Unit ,
551523) {
552524 LazyVerticalGrid (
553525 columns = GridCells .Adaptive (362 .dp),
@@ -558,7 +530,7 @@ private fun HomeContentGrid(
558530 FollowedPodcastItem (
559531 pagerState = pagerState,
560532 items = featuredPodcasts,
561- onPodcastUnfollowed = onPodcastUnfollowed ,
533+ onPodcastUnfollowed = { onHomeAction( HomeAction . PodcastUnfollowed (it)) } ,
562534 navigateToPodcastDetails = navigateToPodcastDetails,
563535 modifier = Modifier
564536 .fillMaxWidth()
@@ -573,7 +545,7 @@ private fun HomeContentGrid(
573545 categories = homeCategories,
574546 selectedCategory = selectedHomeCategory,
575547 showHorizontalLine = false ,
576- onCategorySelected = onHomeCategorySelected ,
548+ onCategorySelected = { onHomeAction( HomeAction . HomeCategorySelected (it)) } ,
577549 modifier = Modifier .width(240 .dp)
578550 )
579551 }
@@ -585,7 +557,7 @@ private fun HomeContentGrid(
585557 libraryItems(
586558 library = library,
587559 navigateToPlayer = navigateToPlayer,
588- onQueueEpisode = onQueueEpisode
560+ onQueueEpisode = { onHomeAction( HomeAction . QueueEpisode (it)) }
589561 )
590562 }
591563
@@ -595,9 +567,11 @@ private fun HomeContentGrid(
595567 podcastCategoryFilterResult = podcastCategoryFilterResult,
596568 navigateToPodcastDetails = navigateToPodcastDetails,
597569 navigateToPlayer = navigateToPlayer,
598- onCategorySelected = onCategorySelected,
599- onTogglePodcastFollowed = onTogglePodcastFollowed,
600- onQueueEpisode = onQueueEpisode
570+ onCategorySelected = { onHomeAction(HomeAction .CategorySelected (it)) },
571+ onTogglePodcastFollowed = {
572+ onHomeAction(HomeAction .TogglePodcastFollowed (it))
573+ },
574+ onQueueEpisode = { onHomeAction(HomeAction .QueueEpisode (it)) },
601575 )
602576 }
603577 }
@@ -824,14 +798,9 @@ private fun PreviewHome() {
824798 episodes = PreviewPodcastEpisodes
825799 ),
826800 library = LibraryInfo (),
827- onCategorySelected = {},
828- onPodcastUnfollowed = {},
801+ onHomeAction = {},
829802 navigateToPodcastDetails = {},
830803 navigateToPlayer = {},
831- onHomeCategorySelected = {},
832- onTogglePodcastFollowed = {},
833- onLibraryPodcastSelected = {},
834- onQueueEpisode = {}
835804 )
836805 }
837806}
0 commit comments