From 741ce1fa075e983117f36673f28bb7b94f2aab8c Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sun, 31 May 2026 23:51:59 -0400 Subject: [PATCH] fix(android): extract PlaylistCardCover to clear detekt LongMethod Adding the play-button overlay in the previous commit pushed PlaylistCard from 49 to 62 lines, two over detekt's 60-line cap. Splitting the cover stack into its own private composable (PlaylistCardCover) brings the outer function back under the limit while keeping the call site readable. Behavior identical to f17610ec; pure refactor for lint compliance. --- .../playlists/widgets/PlaylistCard.kt | 80 ++++++++++++------- 1 file changed, 49 insertions(+), 31 deletions(-) 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) {