diff --git a/android/app/src/main/java/com/fabledsword/minstrel/library/ui/AlbumDetailScreen.kt b/android/app/src/main/java/com/fabledsword/minstrel/library/ui/AlbumDetailScreen.kt index 02bab424..f92f124d 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/library/ui/AlbumDetailScreen.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/library/ui/AlbumDetailScreen.kt @@ -3,7 +3,6 @@ package com.fabledsword.minstrel.library.ui import androidx.compose.foundation.background -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box 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.ArtistDetail 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.LikeButton import com.fabledsword.minstrel.shared.widgets.PullToRefreshScaffold @@ -315,56 +314,35 @@ private fun TrackRow( onNavigateToAlbum: (String) -> Unit, onNavigateToArtist: (String) -> Unit, ) { - val titleColor = if (nowPlaying) { - MaterialTheme.colorScheme.primary - } else { - MaterialTheme.colorScheme.onSurface - } - Row( - modifier = Modifier - .fillMaxWidth() - .clickable(onClick = onClick) - .padding(horizontal = 16.dp, vertical = 8.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = "${track.trackNumber ?: 0}", - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.width(28.dp), - ) - Column(modifier = Modifier.weight(1f)) { + TrackRow( + title = track.title, + artist = track.artistName, + trackId = track.id, + onClick = onClick, + nowPlaying = nowPlaying, + leading = { Text( - text = track.title, - style = MaterialTheme.typography.bodyLarge, - color = titleColor, - maxLines = 1, - overflow = TextOverflow.Ellipsis, + text = "${track.trackNumber ?: 0}", + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.width(28.dp), ) - 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 = formatDuration(track.durationSec, zero = "--:--"), - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.padding(start = 12.dp), - ) - LikeButton(liked = liked, onToggle = onToggleLike) - TrackActionsButton( - track = track, - onNavigateToAlbum = onNavigateToAlbum, - onNavigateToArtist = onNavigateToArtist, - ) - } + }, + trailing = { + Text( + text = formatDuration(track.durationSec, zero = "--:--"), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.padding(start = 12.dp), + ) + LikeButton(liked = liked, onToggle = onToggleLike) + TrackActionsButton( + track = track, + onNavigateToAlbum = onNavigateToAlbum, + onNavigateToArtist = onNavigateToArtist, + ) + }, + ) } private const val SKELETON_TRACK_ROWS = 8