diff --git a/android/app/src/main/java/com/fabledsword/minstrel/playlists/widgets/PlaylistCard.kt b/android/app/src/main/java/com/fabledsword/minstrel/playlists/widgets/PlaylistCard.kt index f0a9824d..60f06ca8 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/playlists/widgets/PlaylistCard.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/playlists/widgets/PlaylistCard.kt @@ -60,37 +60,10 @@ fun PlaylistCard( color = Color.Transparent, ) { Column(modifier = Modifier.padding(horizontal = 8.dp)) { - CoverTile( - url = playlist.coverUrl, - contentDescription = playlist.name, - size = 144.dp, - fallback = { - Icon( - imageVector = Lucide.ListMusic, - contentDescription = null, - tint = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.size(56.dp), - ) - }, - overlay = { - if (playlist.isSystem) { - VariantPill( - label = systemLabelFor(playlist.systemVariant), - modifier = Modifier - .align(Alignment.TopStart) - .padding(6.dp), - ) - } - if (onPlay != null) { - PlayCircleButton( - onPlay = onPlay, - enabled = playEnabled, - modifier = Modifier - .align(Alignment.BottomEnd) - .padding(6.dp), - ) - } - }, + PlaylistCardCover( + playlist = playlist, + onPlay = onPlay, + playEnabled = playEnabled, ) Spacer(Modifier.height(8.dp)) Text( @@ -111,6 +84,51 @@ fun PlaylistCard( } } +/** + * 144dp cover with the system-variant pill (top-start) and play + * overlay (bottom-end) stacked on top. Pulled out of [PlaylistCard] + * to keep that composable under detekt's 60-line LongMethod cap. + */ +@Composable +private fun PlaylistCardCover( + playlist: PlaylistRef, + onPlay: (suspend () -> Unit)?, + playEnabled: Boolean, +) { + CoverTile( + url = playlist.coverUrl, + contentDescription = playlist.name, + size = 144.dp, + fallback = { + Icon( + imageVector = Lucide.ListMusic, + contentDescription = null, + tint = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.size(56.dp), + ) + }, + overlay = { + if (playlist.isSystem) { + VariantPill( + label = systemLabelFor(playlist.systemVariant), + modifier = Modifier + .align(Alignment.TopStart) + .padding(6.dp), + ) + } + if (onPlay != null) { + PlayCircleButton( + onPlay = onPlay, + enabled = playEnabled, + modifier = Modifier + .align(Alignment.BottomEnd) + .padding(6.dp), + ) + } + }, + ) +} + /** Small label chip overlaid on a system playlist's cover. */ @Composable private fun VariantPill(label: String, modifier: Modifier = Modifier) {