fix(android): extract PlaylistCardCover to clear detekt LongMethod
android / Build + lint + test (push) Successful in 3m32s
android / Build signed release APK (push) Has been skipped

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.
This commit is contained in:
2026-05-31 23:51:59 -04:00
parent f17610ecd5
commit 741ce1fa07
@@ -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) {