refactor(android): migrate AlbumDetail TrackRow to shared TrackRow

This commit is contained in:
2026-05-29 22:48:06 -04:00
parent 6582d7699e
commit 7bed0c226b
@@ -3,7 +3,6 @@
package com.fabledsword.minstrel.library.ui package com.fabledsword.minstrel.library.ui
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -56,7 +55,7 @@ import com.fabledsword.minstrel.models.TrackRef
import com.fabledsword.minstrel.nav.AlbumDetail import com.fabledsword.minstrel.nav.AlbumDetail
import com.fabledsword.minstrel.nav.ArtistDetail import com.fabledsword.minstrel.nav.ArtistDetail
import com.fabledsword.minstrel.shared.formatDuration import com.fabledsword.minstrel.shared.formatDuration
import com.fabledsword.minstrel.shared.widgets.CachedDot import com.fabledsword.minstrel.shared.widgets.TrackRow
import com.fabledsword.minstrel.shared.widgets.EmptyState import com.fabledsword.minstrel.shared.widgets.EmptyState
import com.fabledsword.minstrel.shared.widgets.LikeButton import com.fabledsword.minstrel.shared.widgets.LikeButton
import com.fabledsword.minstrel.shared.widgets.PullToRefreshScaffold import com.fabledsword.minstrel.shared.widgets.PullToRefreshScaffold
@@ -315,43 +314,21 @@ private fun TrackRow(
onNavigateToAlbum: (String) -> Unit, onNavigateToAlbum: (String) -> Unit,
onNavigateToArtist: (String) -> Unit, onNavigateToArtist: (String) -> Unit,
) { ) {
val titleColor = if (nowPlaying) { TrackRow(
MaterialTheme.colorScheme.primary title = track.title,
} else { artist = track.artistName,
MaterialTheme.colorScheme.onSurface trackId = track.id,
} onClick = onClick,
Row( nowPlaying = nowPlaying,
modifier = Modifier leading = {
.fillMaxWidth()
.clickable(onClick = onClick)
.padding(horizontal = 16.dp, vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Text( Text(
text = "${track.trackNumber ?: 0}", text = "${track.trackNumber ?: 0}",
style = MaterialTheme.typography.bodySmall, style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant, color = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.width(28.dp), modifier = Modifier.width(28.dp),
) )
Column(modifier = Modifier.weight(1f)) { },
Text( trailing = {
text = track.title,
style = MaterialTheme.typography.bodyLarge,
color = titleColor,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
if (track.artistName.isNotEmpty()) {
Text(
text = track.artistName,
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
}
}
CachedDot(track.id)
Text( Text(
text = formatDuration(track.durationSec, zero = "--:--"), text = formatDuration(track.durationSec, zero = "--:--"),
style = MaterialTheme.typography.bodySmall, style = MaterialTheme.typography.bodySmall,
@@ -364,7 +341,8 @@ private fun TrackRow(
onNavigateToAlbum = onNavigateToAlbum, onNavigateToAlbum = onNavigateToAlbum,
onNavigateToArtist = onNavigateToArtist, onNavigateToArtist = onNavigateToArtist,
) )
} },
)
} }
private const val SKELETON_TRACK_ROWS = 8 private const val SKELETON_TRACK_ROWS = 8