From 1606885f7139db0ae55eb09bde820b687d991d27 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Sun, 26 Jun 2022 23:07:25 +0200 Subject: [PATCH] Fix minor radio bug --- .../vimusic/services/PlayerService.kt | 29 +++++++------------ .../ui/components/themed/MediaItemMenu.kt | 11 ++++--- .../vimusic/ui/screens/ArtistScreen.kt | 4 +-- .../vimusic/ui/screens/SearchResultScreen.kt | 4 +-- 4 files changed, 21 insertions(+), 27 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt index 4b545cc..5fedb1f 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt @@ -525,28 +525,19 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback timerJob = null } - fun startRadio( - endpoint: NavigationEndpoint.Endpoint.Watch?, - ) { - startRadio( - videoId = endpoint?.videoId, - playlistId = endpoint?.playlistId, - playlistSetVideoId = endpoint?.playlistSetVideoId, - parameters = endpoint?.params, - justAdd = false - ) - } + fun setupRadio(endpoint: NavigationEndpoint.Endpoint.Watch?) = + startRadio(endpoint= endpoint, justAdd = true) - fun startRadio( - videoId: String?, - playlistId: String? = null, - playlistSetVideoId: String? = null, - parameters: String? = null, - justAdd: Boolean = true - ) { + fun playRadio(endpoint: NavigationEndpoint.Endpoint.Watch?) = + startRadio(endpoint= endpoint, justAdd = false) + + private fun startRadio(endpoint: NavigationEndpoint.Endpoint.Watch?, justAdd: Boolean) { radio = null YoutubePlayer.Radio( - videoId, playlistId, playlistSetVideoId, parameters + endpoint?.videoId, + endpoint?.playlistId, + endpoint?.playlistSetVideoId, + endpoint?.params ).let { coroutineScope.launch(Dispatchers.Main) { if (justAdd) { diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/themed/MediaItemMenu.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/themed/MediaItemMenu.kt index 4cc292c..c022527 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/themed/MediaItemMenu.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/themed/MediaItemMenu.kt @@ -1,6 +1,5 @@ package it.vfsfitvnm.vimusic.ui.components.themed -import android.os.Bundle import androidx.compose.animation.AnimatedContentScope import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.with @@ -14,9 +13,7 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.platform.LocalContext -import androidx.core.os.bundleOf import androidx.media3.common.MediaItem -import androidx.media3.common.Player import it.vfsfitvnm.route.RouteHandler import it.vfsfitvnm.route.empty import it.vfsfitvnm.vimusic.Database @@ -31,6 +28,7 @@ import it.vfsfitvnm.vimusic.ui.screens.rememberArtistRoute import it.vfsfitvnm.vimusic.ui.screens.rememberCreatePlaylistRoute import it.vfsfitvnm.vimusic.ui.screens.rememberPlaylistOrAlbumRoute import it.vfsfitvnm.vimusic.utils.* +import it.vfsfitvnm.youtubemusic.models.NavigationEndpoint import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -152,7 +150,12 @@ fun NonQueuedMediaItemMenu( onDismiss = onDismiss, onStartRadio = { binder?.player?.forcePlay(mediaItem) - binder?.startRadio(videoId = mediaItem.mediaId, playlistId = mediaItem.mediaMetadata.extras?.getString("playlistId")) + binder?.setupRadio( + NavigationEndpoint.Endpoint.Watch( + videoId = mediaItem.mediaId, + playlistId = mediaItem.mediaMetadata.extras?.getString("playlistId") + ) + ) }, onPlaySingle = { binder?.player?.forcePlay(mediaItem) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/ArtistScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/ArtistScreen.kt index d162406..820be8d 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/ArtistScreen.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/ArtistScreen.kt @@ -159,7 +159,7 @@ fun ArtistScreen( colorFilter = ColorFilter.tint(colorPalette.text), modifier = Modifier .clickable { - binder?.startRadio(artist.shuffleEndpoint) + binder?.playRadio(artist.shuffleEndpoint) } .shadow(elevation = 2.dp, shape = CircleShape) .background( @@ -176,7 +176,7 @@ fun ArtistScreen( colorFilter = ColorFilter.tint(colorPalette.text), modifier = Modifier .clickable { - binder?.startRadio(artist.radioEndpoint) + binder?.playRadio(artist.radioEndpoint) } .shadow(elevation = 2.dp, shape = CircleShape) .background( diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/SearchResultScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/SearchResultScreen.kt index 4ff4b86..26507e9 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/SearchResultScreen.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/SearchResultScreen.kt @@ -217,11 +217,11 @@ fun SearchResultScreen( is YouTube.Item.Playlist -> playlistOrAlbumRoute(item.info.endpoint!!.browseId) is YouTube.Item.Song -> { binder?.player?.forcePlay(item.asMediaItem) - binder?.startRadio(item.info.endpoint) + binder?.setupRadio(item.info.endpoint) } is YouTube.Item.Video -> { binder?.player?.forcePlay(item.asMediaItem) - binder?.startRadio(item.info.endpoint) + binder?.setupRadio(item.info.endpoint) } } }