From a67d5f19e125bf01bdf70a82b0943ee0936dcdff Mon Sep 17 00:00:00 2001 From: Philip Leis Date: Sun, 5 Jan 2025 18:59:06 +0100 Subject: [PATCH 1/3] Add track number and artist to AlbumInfoScreen --- .../ru/stersh/youamp/main/ui/Navigation.kt | 21 ++++++++++++------- .../album/data/AlbumInfoRepositoryImpl.kt | 2 ++ .../youamp/feature/album/domain/AlbumInfo.kt | 2 +- .../youamp/feature/album/domain/AlbumSong.kt | 2 ++ .../feature/album/ui/AlbumInfoScreen.kt | 21 ++++++++++++++++--- .../feature/album/ui/AlbumInfoStateUi.kt | 2 ++ .../stersh/youamp/feature/album/ui/Mapper.kt | 2 ++ 7 files changed, 41 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/ru/stersh/youamp/main/ui/Navigation.kt b/app/src/main/java/ru/stersh/youamp/main/ui/Navigation.kt index af9d80cd..20414f8c 100644 --- a/app/src/main/java/ru/stersh/youamp/main/ui/Navigation.kt +++ b/app/src/main/java/ru/stersh/youamp/main/ui/Navigation.kt @@ -3,18 +3,21 @@ package ru.stersh.youamp.main.ui import androidx.compose.runtime.Immutable import kotlinx.serialization.Serializable - @Serializable object Main @Serializable -data class AlbumInfo(val albumId: String) +data class AlbumInfo( + val albumId: String, +) @Serializable object Player @Serializable -data class ArtistInfo(val artistId: String) +data class ArtistInfo( + val artistId: String, +) @Serializable object PlayQueue @@ -29,19 +32,23 @@ object AddServer object ServerList @Serializable -data class ServerEditor(val serverId: Long) +data class ServerEditor( + val serverId: Long, +) @Serializable -data class PlaylistInfo(val playlistId: String) +data class PlaylistInfo( + val playlistId: String, +) @Immutable data class SongInfoProperties( val songId: String, - val showAlbum: Boolean + val showAlbum: Boolean, ) @Serializable object Settings @Serializable -object About \ No newline at end of file +object About diff --git a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/data/AlbumInfoRepositoryImpl.kt b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/data/AlbumInfoRepositoryImpl.kt index 4bef0847..7e7ffb30 100644 --- a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/data/AlbumInfoRepositoryImpl.kt +++ b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/data/AlbumInfoRepositoryImpl.kt @@ -35,7 +35,9 @@ internal class AlbumInfoRepositoryImpl( private fun Song.toDomain(): AlbumSong { return AlbumSong( id = id, + track = track, title = title, + artist = artist, duration = formatSongDuration((duration ?: 0) * 1000) ) } diff --git a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumInfo.kt b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumInfo.kt index 17ec3ad7..0e22a647 100644 --- a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumInfo.kt +++ b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumInfo.kt @@ -6,4 +6,4 @@ internal data class AlbumInfo( val artist: String, val year: String?, val songs: List -) \ No newline at end of file +) \ No newline at end of file diff --git a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumSong.kt b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumSong.kt index b6f78f73..a429b4aa 100644 --- a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumSong.kt +++ b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumSong.kt @@ -2,6 +2,8 @@ package ru.stersh.youamp.feature.album.domain internal data class AlbumSong( val id: String, + val track: Int?, val title: String, + val artist: String?, val duration: String ) \ No newline at end of file diff --git a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt index 6929d28b..c6ceef33 100644 --- a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt +++ b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt @@ -267,6 +267,9 @@ private fun AlbumSongItem( onClick: () -> Unit ) { ListItem( + leadingContent = { + Text(text = song.track.toString()) + }, headlineContent = { Text( text = song.title, @@ -274,6 +277,9 @@ private fun AlbumSongItem( overflow = TextOverflow.Ellipsis ) }, + supportingContent = { + Text(text = song.artist ?: "") + }, trailingContent = { Text(text = song.duration) }, @@ -287,7 +293,9 @@ private fun AlbumSongItemPreview() { val song = AlbumSongUi( id = "1", title = "Coolest song in the world with very long title", - duration = "12:00" + duration = "12:00", + track = 1, + artist = "Someone" ) AlbumSongItem( song = song, @@ -301,17 +309,24 @@ private fun AlbumInfoScreenPreview() { val songs = listOf( AlbumSongUi( id = "1", + track = 1, title = "Test song", - duration = "2:11" + duration = "2:11", + artist = "Test artist" + ), AlbumSongUi( id = "2", + track = 2, title = "Test song 2", - duration = "6:23" + artist = "Someone else", + duration = "6:23", ), AlbumSongUi( id = "3", + track = 3, title = "Test song 3", + artist = "Test artist", duration = "5:11" ) ) diff --git a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoStateUi.kt b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoStateUi.kt index b7c1d48a..427ee376 100644 --- a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoStateUi.kt +++ b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoStateUi.kt @@ -22,5 +22,7 @@ internal data class AlbumInfoUi( internal data class AlbumSongUi( val id: String, val title: String, + val track: Int?, + val artist: String?, val duration: String ) \ No newline at end of file diff --git a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/Mapper.kt b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/Mapper.kt index 75f03ea0..e40dbed8 100644 --- a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/Mapper.kt +++ b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/Mapper.kt @@ -17,6 +17,8 @@ internal fun AlbumSong.toUi(): AlbumSongUi { return AlbumSongUi( id = id, title = title, + track = track, + artist = artist, duration = duration ) } \ No newline at end of file From 03a759381ed0515eb0de473ee2975c2af4dc762a Mon Sep 17 00:00:00 2001 From: Philip Leis Date: Mon, 6 Jan 2025 16:09:16 +0100 Subject: [PATCH 2/3] Add null check to AlbumInfoScreen changes. Removed unintended refactoring. --- .../ru/stersh/youamp/main/ui/Navigation.kt | 21 +++++++------------ .../youamp/feature/album/domain/AlbumInfo.kt | 2 +- .../feature/album/ui/AlbumInfoScreen.kt | 8 +++++-- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/ru/stersh/youamp/main/ui/Navigation.kt b/app/src/main/java/ru/stersh/youamp/main/ui/Navigation.kt index 20414f8c..af9d80cd 100644 --- a/app/src/main/java/ru/stersh/youamp/main/ui/Navigation.kt +++ b/app/src/main/java/ru/stersh/youamp/main/ui/Navigation.kt @@ -3,21 +3,18 @@ package ru.stersh.youamp.main.ui import androidx.compose.runtime.Immutable import kotlinx.serialization.Serializable + @Serializable object Main @Serializable -data class AlbumInfo( - val albumId: String, -) +data class AlbumInfo(val albumId: String) @Serializable object Player @Serializable -data class ArtistInfo( - val artistId: String, -) +data class ArtistInfo(val artistId: String) @Serializable object PlayQueue @@ -32,23 +29,19 @@ object AddServer object ServerList @Serializable -data class ServerEditor( - val serverId: Long, -) +data class ServerEditor(val serverId: Long) @Serializable -data class PlaylistInfo( - val playlistId: String, -) +data class PlaylistInfo(val playlistId: String) @Immutable data class SongInfoProperties( val songId: String, - val showAlbum: Boolean, + val showAlbum: Boolean ) @Serializable object Settings @Serializable -object About +object About \ No newline at end of file diff --git a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumInfo.kt b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumInfo.kt index 0e22a647..17ec3ad7 100644 --- a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumInfo.kt +++ b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/domain/AlbumInfo.kt @@ -6,4 +6,4 @@ internal data class AlbumInfo( val artist: String, val year: String?, val songs: List -) \ No newline at end of file +) \ No newline at end of file diff --git a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt index c6ceef33..e8794b72 100644 --- a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt +++ b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt @@ -268,7 +268,7 @@ private fun AlbumSongItem( ) { ListItem( leadingContent = { - Text(text = song.track.toString()) + song.track?.let { Text(text = it.toString()) } }, headlineContent = { Text( @@ -278,7 +278,11 @@ private fun AlbumSongItem( ) }, supportingContent = { - Text(text = song.artist ?: "") + song.artist?.let { + Text(text = it, + maxLines = 1, + overflow = TextOverflow.Ellipsis) + } }, trailingContent = { Text(text = song.duration) From ebf0c053c21ff6cb1bf3bd7a83dc7f57037c313b Mon Sep 17 00:00:00 2001 From: Philip Leis Date: Mon, 6 Jan 2025 16:55:40 +0100 Subject: [PATCH 3/3] Fixed formatting --- .../ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt index e8794b72..11becf8e 100644 --- a/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt +++ b/feature/album/info/src/main/java/ru/stersh/youamp/feature/album/ui/AlbumInfoScreen.kt @@ -279,9 +279,11 @@ private fun AlbumSongItem( }, supportingContent = { song.artist?.let { - Text(text = it, - maxLines = 1, - overflow = TextOverflow.Ellipsis) + Text( + text = it, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) } }, trailingContent = {