feat: M3 weighted shuffle v1 — real /api/radio with scoring #21
@@ -95,6 +95,29 @@ fun AlbumDetailScreen(
|
||||
onRefresh = { viewModel.refresh().join() },
|
||||
modifier = Modifier.fillMaxSize().padding(inner),
|
||||
) {
|
||||
AlbumDetailStateContent(
|
||||
state = state,
|
||||
viewModel = viewModel,
|
||||
playerViewModel = playerViewModel,
|
||||
navController = navController,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun titleFor(state: AlbumDetailUiState): String = when (state) {
|
||||
is AlbumDetailUiState.Success -> state.detail.album.title
|
||||
is AlbumDetailUiState.Loading -> state.seed?.title ?: "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()
|
||||
@@ -128,14 +151,6 @@ fun AlbumDetailScreen(
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun titleFor(state: AlbumDetailUiState): String = when (state) {
|
||||
is AlbumDetailUiState.Success -> state.detail.album.title
|
||||
is AlbumDetailUiState.Loading -> state.seed?.title ?: "Album"
|
||||
is AlbumDetailUiState.Error -> "Album"
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
||||
Reference in New Issue
Block a user