From 51291076dcbf75e9f7f1c3bf3858b125102fac29 Mon Sep 17 00:00:00 2001 From: Shreyas Patil Date: Sun, 26 Jan 2025 18:46:41 +0530 Subject: [PATCH 1/3] fix: onClick logic for ArtistsOverview and AlbumsOverview --- .../brainzplayer/BrainzPlayerScreen.kt | 3 +- .../brainzplayer/overview/OverviewScreen.kt | 75 ++++++++++++++----- 2 files changed, 57 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/BrainzPlayerScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/BrainzPlayerScreen.kt index 03716d8b..daf503fd 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/BrainzPlayerScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/BrainzPlayerScreen.kt @@ -160,7 +160,8 @@ fun BrainzPlayerHomeScreen( goToAlbumScreen = {currentTab.value = 3}, brainzPlayerViewModel = brainzPlayerViewModel, artists = previewArtists, - albums = previewAlbums + albums = previewAlbums, + albumSongsMap = albumSongsMap ) 1 -> RecentPlaysScreen( songsPlayedToday = songsPlayedToday, diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/overview/OverviewScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/overview/OverviewScreen.kt index d3d1b732..8e86e3e7 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/overview/OverviewScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/overview/OverviewScreen.kt @@ -42,7 +42,8 @@ fun OverviewScreen( recentlyPlayedSongs: List, brainzPlayerViewModel: BrainzPlayerViewModel = hiltViewModel(), artists: List, - albums: List + albums: List, + albumSongsMap: Map> ) { Column( modifier = Modifier @@ -53,17 +54,49 @@ fun OverviewScreen( modifier = Modifier.fillMaxWidth(), recentlyPlayedSongs = recentlyPlayedSongs, goToRecentScreen = goToRecentScreen, - brainzPlayerViewModel = brainzPlayerViewModel + onClick = { song -> + brainzPlayerViewModel.changePlayable( + recentlyPlayedSongs, + PlayableType.ALL_SONGS, + song.mediaID, + recentlyPlayedSongs.indexOf(song), + 0L + ) + brainzPlayerViewModel.playOrToggleSong(song, true) + } ) ArtistsOverview( modifier = Modifier.fillMaxWidth(), artists = artists, - goToArtistScreen = goToArtistScreen + goToArtistScreen = goToArtistScreen, + onClick = { artist -> + brainzPlayerViewModel.changePlayable( + artist.songs, + PlayableType.ARTIST, + artist.id, + 0, + 0L + ) + brainzPlayerViewModel.playOrToggleSong(artist.songs[0], true) + } ) AlbumsOverview( modifier = Modifier.fillMaxWidth(), albums = albums, - goToAlbumScreen = goToAlbumScreen + goToAlbumScreen = goToAlbumScreen, + onClick = { album -> + val albumSongs = albumSongsMap[album]?.sortedBy { it.trackNumber } + if (!albumSongs.isNullOrEmpty()) { + brainzPlayerViewModel.changePlayable( + albumSongs, + PlayableType.ALBUM, + album.albumId, + 0, + 0L + ) + brainzPlayerViewModel.playOrToggleSong(albumSongs[0], true) + } + } ) } } @@ -72,8 +105,8 @@ fun OverviewScreen( private fun RecentlyPlayedOverview( modifier: Modifier = Modifier, recentlyPlayedSongs: List, - brainzPlayerViewModel: BrainzPlayerViewModel, - goToRecentScreen: () -> Unit + goToRecentScreen: () -> Unit, + onClick: (Song) -> Unit ) { Column( modifier = modifier @@ -93,20 +126,14 @@ private fun RecentlyPlayedOverview( ) { items(items = recentlyPlayedSongs) { song -> if (song.title != "") { - BrainzPlayerActivityCards(icon = song.albumArt, + BrainzPlayerActivityCards( + icon = song.albumArt, errorIcon = R.drawable.ic_song, title = song.artist, subtitle = song.title, modifier = Modifier .clickable { - brainzPlayerViewModel.changePlayable( - recentlyPlayedSongs, - PlayableType.ALL_SONGS, - song.mediaID, - recentlyPlayedSongs.indexOf(song), - 0L - ) - brainzPlayerViewModel.playOrToggleSong(song, true) + onClick(song) } ) } else { @@ -143,13 +170,12 @@ private fun RecentlyPlayedOverview( private fun ArtistsOverview( modifier: Modifier = Modifier, artists: List, - goToArtistScreen: () -> Unit + goToArtistScreen: () -> Unit, + onClick: (Artist) -> Unit ) { Column( modifier = modifier - .background( - brush = ListenBrainzTheme.colorScheme.gradientBrush - ) + .background(brush = ListenBrainzTheme.colorScheme.gradientBrush) .padding(top = 15.dp, bottom = 15.dp) ) { Text( @@ -170,6 +196,10 @@ private fun ArtistsOverview( errorIcon = R.drawable.ic_artist, title = "", subtitle = artist.name, + modifier = Modifier + .clickable { + onClick(artist) + } ) } else { Box( @@ -205,7 +235,8 @@ private fun ArtistsOverview( private fun AlbumsOverview( modifier: Modifier = Modifier, albums: List, - goToAlbumScreen: () -> Unit + goToAlbumScreen: () -> Unit, + onClick: (Album) -> Unit ) { Column( modifier = modifier @@ -230,6 +261,10 @@ private fun AlbumsOverview( errorIcon = R.drawable.ic_album, title = album.artist, subtitle = album.title, + modifier = Modifier + .clickable { + onClick(album) + } ) } else { Box( From 697bbe3e5ddb2ffa3867550f0e334c00a8d58ff2 Mon Sep 17 00:00:00 2001 From: Jasjeet Singh <98077881+07jasjeet@users.noreply.github.com> Date: Sun, 26 Jan 2025 22:27:34 +0530 Subject: [PATCH 2/3] Add preview for BP activity cards --- .../ui/components/BrainzPlayerActivityCard.kt | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/listenbrainz/android/ui/components/BrainzPlayerActivityCard.kt b/app/src/main/java/org/listenbrainz/android/ui/components/BrainzPlayerActivityCard.kt index d224225e..717419b8 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/components/BrainzPlayerActivityCard.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/components/BrainzPlayerActivityCard.kt @@ -26,13 +26,22 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.AsyncImage import org.listenbrainz.android.R +import org.listenbrainz.android.ui.theme.ListenBrainzTheme @Composable -fun BrainzPlayerActivityCards(icon: String, errorIcon : Int, title: String, subtitle : String,modifier : Modifier = Modifier) { +fun BrainzPlayerActivityCards( + modifier: Modifier = Modifier, + icon: String, + errorIcon: Int, + title: String, + subtitle: String, +) { Box( modifier = modifier .padding(4.dp) @@ -100,8 +109,19 @@ fun BrainzPlayerActivityCards(icon: String, errorIcon : Int, title: String, subt color = MaterialTheme.colorScheme.onSurface ) } - - } } +} + +@PreviewLightDark +@Composable +private fun CardsPreview() { + ListenBrainzTheme { + BrainzPlayerActivityCards( + icon = "", + errorIcon = R.drawable.ic_album, + title = "Title", + subtitle = "Subtitle" + ) + } } \ No newline at end of file From 4556f96eac9ea344a0a142b1e4a893a6808a114b Mon Sep 17 00:00:00 2001 From: Jasjeet Singh <98077881+07jasjeet@users.noreply.github.com> Date: Sun, 26 Jan 2025 22:30:27 +0530 Subject: [PATCH 3/3] Add click listeners --- .../ui/screens/brainzplayer/overview/OverviewScreen.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/overview/OverviewScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/overview/OverviewScreen.kt index aa2da745..7b25dfd0 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/overview/OverviewScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/brainzplayer/overview/OverviewScreen.kt @@ -130,7 +130,6 @@ private fun RecentlyPlayedOverview( onClick(song) } ) - } if (recentlyPlayedSongs.isNotEmpty()) item { @@ -168,6 +167,9 @@ private fun ArtistsOverview( ) { items(items = artists) { artist -> BrainzPlayerActivityCards( + modifier = Modifier.clickable { + onClick(artist) + }, icon = "", errorIcon = R.drawable.ic_artist, title = "", @@ -211,6 +213,9 @@ private fun AlbumsOverview( ) { items(items = albums) { album -> BrainzPlayerActivityCards( + modifier = Modifier.clickable { + onClick(album) + }, icon = album.albumArt, errorIcon = R.drawable.ic_album, title = album.artist,