fix(ci): scope integration Postgres discovery to this job's network #53
+48
-33
@@ -95,39 +95,12 @@ fun AlbumDetailScreen(
|
|||||||
onRefresh = { viewModel.refresh().join() },
|
onRefresh = { viewModel.refresh().join() },
|
||||||
modifier = Modifier.fillMaxSize().padding(inner),
|
modifier = Modifier.fillMaxSize().padding(inner),
|
||||||
) {
|
) {
|
||||||
Crossfade(targetState = state, label = "album-detail") { s ->
|
AlbumDetailStateContent(
|
||||||
when (s) {
|
state = state,
|
||||||
is AlbumDetailUiState.Loading -> SkeletonTrackList()
|
viewModel = viewModel,
|
||||||
is AlbumDetailUiState.Error -> EmptyState(
|
playerViewModel = playerViewModel,
|
||||||
title = "Couldn't load album",
|
navController = navController,
|
||||||
body = s.message,
|
)
|
||||||
)
|
|
||||||
is AlbumDetailUiState.Success -> {
|
|
||||||
val albumLiked by viewModel.albumLiked.collectAsStateWithLifecycle()
|
|
||||||
val likedTrackIds by viewModel.likedTrackIds
|
|
||||||
.collectAsStateWithLifecycle()
|
|
||||||
val playerState by playerViewModel.uiState
|
|
||||||
.collectAsStateWithLifecycle()
|
|
||||||
AlbumBody(
|
|
||||||
detail = s.detail,
|
|
||||||
albumLiked = albumLiked,
|
|
||||||
likedTrackIds = likedTrackIds,
|
|
||||||
playingTrackId = playerState.currentTrack?.id,
|
|
||||||
onPlayAll = { viewModel.play(startTrackId = null) },
|
|
||||||
onShuffleAll = viewModel::shuffle,
|
|
||||||
onTrackClick = { id -> viewModel.play(startTrackId = id) },
|
|
||||||
onToggleAlbumLike = viewModel::toggleLikeAlbum,
|
|
||||||
onToggleTrackLike = viewModel::toggleLikeTrack,
|
|
||||||
onNavigateToAlbum = { id ->
|
|
||||||
navController.navigate(AlbumDetail(id))
|
|
||||||
},
|
|
||||||
onNavigateToArtist = { id ->
|
|
||||||
navController.navigate(ArtistDetail(id))
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -138,6 +111,48 @@ private fun titleFor(state: AlbumDetailUiState): String = when (state) {
|
|||||||
is AlbumDetailUiState.Error -> "Album"
|
is AlbumDetailUiState.Error -> "Album"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun AlbumDetailStateContent(
|
||||||
|
state: AlbumDetailUiState,
|
||||||
|
viewModel: AlbumDetailViewModel,
|
||||||
|
playerViewModel: com.fabledsword.minstrel.player.ui.PlayerViewModel,
|
||||||
|
navController: NavHostController,
|
||||||
|
) {
|
||||||
|
Crossfade(targetState = state, label = "album-detail") { s ->
|
||||||
|
when (s) {
|
||||||
|
is AlbumDetailUiState.Loading -> SkeletonTrackList()
|
||||||
|
is AlbumDetailUiState.Error -> EmptyState(
|
||||||
|
title = "Couldn't load album",
|
||||||
|
body = s.message,
|
||||||
|
)
|
||||||
|
is AlbumDetailUiState.Success -> {
|
||||||
|
val albumLiked by viewModel.albumLiked.collectAsStateWithLifecycle()
|
||||||
|
val likedTrackIds by viewModel.likedTrackIds
|
||||||
|
.collectAsStateWithLifecycle()
|
||||||
|
val playerState by playerViewModel.uiState
|
||||||
|
.collectAsStateWithLifecycle()
|
||||||
|
AlbumBody(
|
||||||
|
detail = s.detail,
|
||||||
|
albumLiked = albumLiked,
|
||||||
|
likedTrackIds = likedTrackIds,
|
||||||
|
playingTrackId = playerState.currentTrack?.id,
|
||||||
|
onPlayAll = { viewModel.play(startTrackId = null) },
|
||||||
|
onShuffleAll = viewModel::shuffle,
|
||||||
|
onTrackClick = { id -> viewModel.play(startTrackId = id) },
|
||||||
|
onToggleAlbumLike = viewModel::toggleLikeAlbum,
|
||||||
|
onToggleTrackLike = viewModel::toggleLikeTrack,
|
||||||
|
onNavigateToAlbum = { id ->
|
||||||
|
navController.navigate(AlbumDetail(id))
|
||||||
|
},
|
||||||
|
onNavigateToArtist = { id ->
|
||||||
|
navController.navigate(ArtistDetail(id))
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun AlbumBody(
|
private fun AlbumBody(
|
||||||
detail: AlbumDetailRef,
|
detail: AlbumDetailRef,
|
||||||
|
|||||||
Reference in New Issue
Block a user