1
1
/*
2
- * Copyright 2020 The Android Open Source Project
2
+ * Copyright 2020-2025 The Android Open Source Project
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
@@ -131,9 +131,8 @@ import kotlinx.collections.immutable.toPersistentList
131
131
import kotlinx.coroutines.launch
132
132
133
133
@OptIn(ExperimentalMaterial3AdaptiveApi ::class )
134
- private fun <T > ThreePaneScaffoldNavigator<T>.isMainPaneHidden (): Boolean {
135
- return scaffoldValue[SupportingPaneScaffoldRole .Main ] == PaneAdaptedValue .Hidden
136
- }
134
+ private fun <T > ThreePaneScaffoldNavigator<T>.isMainPaneHidden (): Boolean =
135
+ scaffoldValue[SupportingPaneScaffoldRole .Main ] == PaneAdaptedValue .Hidden
137
136
138
137
/* *
139
138
* Copied from `calculatePaneScaffoldDirective()` in [PaneScaffoldDirective], with modifications to
@@ -142,7 +141,7 @@ private fun <T> ThreePaneScaffoldNavigator<T>.isMainPaneHidden(): Boolean {
142
141
@OptIn(ExperimentalMaterial3AdaptiveApi ::class )
143
142
fun calculateScaffoldDirective (
144
143
windowAdaptiveInfo : WindowAdaptiveInfo ,
145
- verticalHingePolicy : HingePolicy = HingePolicy .AvoidSeparating
144
+ verticalHingePolicy : HingePolicy = HingePolicy .AvoidSeparating ,
146
145
): PaneScaffoldDirective {
147
146
val maxHorizontalPartitions: Int
148
147
val verticalSpacerSize: Dp
@@ -195,20 +194,19 @@ fun calculateScaffoldDirective(
195
194
* Copied from `getExcludedVerticalBounds()` in [PaneScaffoldDirective] since it is private.
196
195
*/
197
196
@OptIn(ExperimentalMaterial3AdaptiveApi ::class )
198
- private fun getExcludedVerticalBounds (posture : Posture , hingePolicy : HingePolicy ): List <Rect > {
199
- return when (hingePolicy) {
197
+ private fun getExcludedVerticalBounds (posture : Posture , hingePolicy : HingePolicy ): List <Rect > =
198
+ when (hingePolicy) {
200
199
HingePolicy .AvoidSeparating -> posture.separatingVerticalHingeBounds
201
200
HingePolicy .AvoidOccluding -> posture.occludingVerticalHingeBounds
202
201
HingePolicy .AlwaysAvoid -> posture.allVerticalHingeBounds
203
202
else -> emptyList()
204
203
}
205
- }
206
204
207
205
@Composable
208
206
fun MainScreen (
209
207
windowSizeClass : WindowSizeClass ,
210
208
navigateToPlayer : (EpisodeInfo ) -> Unit ,
211
- viewModel : HomeViewModel = hiltViewModel()
209
+ viewModel : HomeViewModel = hiltViewModel(),
212
210
) {
213
211
val homeScreenUiState by viewModel.state.collectAsStateWithLifecycle()
214
212
val uiState = homeScreenUiState
@@ -217,7 +215,7 @@ fun MainScreen(
217
215
uiState = uiState,
218
216
windowSizeClass = windowSizeClass,
219
217
navigateToPlayer = navigateToPlayer,
220
- viewModel = viewModel,
218
+ viewModel = viewModel
221
219
)
222
220
223
221
if (uiState.errorMessage != null ) {
@@ -232,7 +230,7 @@ private fun HomeScreenError(onRetry: () -> Unit, modifier: Modifier = Modifier)
232
230
Column (
233
231
verticalArrangement = Arrangement .Center ,
234
232
horizontalAlignment = Alignment .CenterHorizontally ,
235
- modifier = Modifier .fillMaxSize(),
233
+ modifier = Modifier .fillMaxSize()
236
234
) {
237
235
Text (
238
236
text = stringResource(id = R .string.an_error_has_occurred),
@@ -259,7 +257,7 @@ private fun HomeScreenReady(
259
257
uiState : HomeScreenUiState ,
260
258
windowSizeClass : WindowSizeClass ,
261
259
navigateToPlayer : (EpisodeInfo ) -> Unit ,
262
- viewModel : HomeViewModel = hiltViewModel()
260
+ viewModel : HomeViewModel = hiltViewModel(),
263
261
) {
264
262
val navigator = rememberSupportingPaneScaffoldNavigator<String >(
265
263
scaffoldDirective = calculateScaffoldDirective(currentWindowAdaptiveInfo())
@@ -314,7 +312,7 @@ private fun HomeScreenReady(
314
312
}
315
313
}
316
314
},
317
- showBackButton = navigator.isMainPaneHidden(),
315
+ showBackButton = navigator.isMainPaneHidden()
318
316
)
319
317
}
320
318
},
@@ -325,10 +323,7 @@ private fun HomeScreenReady(
325
323
326
324
@OptIn(ExperimentalMaterial3Api ::class )
327
325
@Composable
328
- private fun HomeAppBar (
329
- isExpanded : Boolean ,
330
- modifier : Modifier = Modifier ,
331
- ) {
326
+ private fun HomeAppBar (isExpanded : Boolean , modifier : Modifier = Modifier ) {
332
327
var queryText by remember {
333
328
mutableStateOf(" " )
334
329
}
@@ -376,7 +371,7 @@ private fun HomeAppBar(
376
371
@Composable
377
372
private fun HomeScreenBackground (
378
373
modifier : Modifier = Modifier ,
379
- content : @Composable BoxScope .() -> Unit
374
+ content : @Composable BoxScope .() -> Unit ,
380
375
) {
381
376
Box (
382
377
modifier = modifier
@@ -404,7 +399,7 @@ private fun HomeScreen(
404
399
onHomeAction : (HomeAction ) -> Unit ,
405
400
navigateToPodcastDetails : (PodcastInfo ) -> Unit ,
406
401
navigateToPlayer : (EpisodeInfo ) -> Unit ,
407
- modifier : Modifier = Modifier
402
+ modifier : Modifier = Modifier ,
408
403
) {
409
404
// Effect that changes the home category selection when there are no subscribed podcasts
410
405
LaunchedEffect (key1 = featuredPodcasts) {
@@ -423,7 +418,7 @@ private fun HomeScreen(
423
418
Column {
424
419
HomeAppBar (
425
420
isExpanded = windowSizeClass.isCompact,
426
- modifier = Modifier .fillMaxWidth(),
421
+ modifier = Modifier .fillMaxWidth()
427
422
)
428
423
if (isLoading) {
429
424
LinearProgressIndicator (
@@ -460,7 +455,7 @@ private fun HomeScreen(
460
455
onHomeAction(action)
461
456
},
462
457
navigateToPodcastDetails = navigateToPodcastDetails,
463
- navigateToPlayer = navigateToPlayer,
458
+ navigateToPlayer = navigateToPlayer
464
459
)
465
460
}
466
461
}
@@ -501,7 +496,7 @@ private fun HomeContent(
501
496
modifier = modifier,
502
497
onHomeAction = onHomeAction,
503
498
navigateToPodcastDetails = navigateToPodcastDetails,
504
- navigateToPlayer = navigateToPlayer,
499
+ navigateToPlayer = navigateToPlayer
505
500
)
506
501
}
507
502
@@ -570,7 +565,7 @@ private fun HomeContentGrid(
570
565
onTogglePodcastFollowed = {
571
566
onHomeAction(HomeAction .TogglePodcastFollowed (it))
572
567
},
573
- onQueueEpisode = { onHomeAction(HomeAction .QueueEpisode (it)) },
568
+ onQueueEpisode = { onHomeAction(HomeAction .QueueEpisode (it)) }
574
569
)
575
570
}
576
571
}
@@ -651,7 +646,7 @@ private fun HomeCategoryTabs(
651
646
@Composable
652
647
private fun HomeCategoryTabIndicator (
653
648
modifier : Modifier = Modifier ,
654
- color : Color = MaterialTheme .colorScheme.onSurface
649
+ color : Color = MaterialTheme .colorScheme.onSurface,
655
650
) {
656
651
Spacer (
657
652
modifier
@@ -684,7 +679,7 @@ private fun FollowedPodcasts(
684
679
state = pagerState,
685
680
contentPadding = PaddingValues (
686
681
horizontal = horizontalPadding,
687
- vertical = 16 .dp,
682
+ vertical = 16 .dp
688
683
),
689
684
pageSpacing = 24 .dp,
690
685
pageSize = PageSize .Fixed (FEATURED_PODCAST_IMAGE_SIZE_DP )
@@ -724,7 +719,7 @@ private fun FollowedPodcastCarouselItem(
724
719
contentDescription = podcastTitle,
725
720
modifier = Modifier
726
721
.fillMaxSize()
727
- .clip(MaterialTheme .shapes.medium),
722
+ .clip(MaterialTheme .shapes.medium)
728
723
)
729
724
730
725
ToggleFollowPodcastIconButton (
@@ -771,7 +766,7 @@ private fun lastUpdated(updated: OffsetDateTime): String {
771
766
private fun HomeAppBarPreview () {
772
767
JetcasterTheme {
773
768
HomeAppBar (
774
- isExpanded = false ,
769
+ isExpanded = false
775
770
)
776
771
}
777
772
}
@@ -799,7 +794,7 @@ private fun PreviewHome() {
799
794
library = LibraryInfo (),
800
795
onHomeAction = {},
801
796
navigateToPodcastDetails = {},
802
- navigateToPlayer = {},
797
+ navigateToPlayer = {}
803
798
)
804
799
}
805
800
}
0 commit comments