Fix minor radio bug

This commit is contained in:
vfsfitvnm
2022-06-26 23:07:25 +02:00
parent 3607b041b2
commit 1606885f71
4 changed files with 21 additions and 27 deletions

View File

@@ -525,28 +525,19 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback
timerJob = null timerJob = null
} }
fun startRadio( fun setupRadio(endpoint: NavigationEndpoint.Endpoint.Watch?) =
endpoint: NavigationEndpoint.Endpoint.Watch?, startRadio(endpoint= endpoint, justAdd = true)
) {
startRadio(
videoId = endpoint?.videoId,
playlistId = endpoint?.playlistId,
playlistSetVideoId = endpoint?.playlistSetVideoId,
parameters = endpoint?.params,
justAdd = false
)
}
fun startRadio( fun playRadio(endpoint: NavigationEndpoint.Endpoint.Watch?) =
videoId: String?, startRadio(endpoint= endpoint, justAdd = false)
playlistId: String? = null,
playlistSetVideoId: String? = null, private fun startRadio(endpoint: NavigationEndpoint.Endpoint.Watch?, justAdd: Boolean) {
parameters: String? = null,
justAdd: Boolean = true
) {
radio = null radio = null
YoutubePlayer.Radio( YoutubePlayer.Radio(
videoId, playlistId, playlistSetVideoId, parameters endpoint?.videoId,
endpoint?.playlistId,
endpoint?.playlistSetVideoId,
endpoint?.params
).let { ).let {
coroutineScope.launch(Dispatchers.Main) { coroutineScope.launch(Dispatchers.Main) {
if (justAdd) { if (justAdd) {

View File

@@ -1,6 +1,5 @@
package it.vfsfitvnm.vimusic.ui.components.themed package it.vfsfitvnm.vimusic.ui.components.themed
import android.os.Bundle
import androidx.compose.animation.AnimatedContentScope import androidx.compose.animation.AnimatedContentScope
import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.with import androidx.compose.animation.with
@@ -14,9 +13,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.core.os.bundleOf
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import androidx.media3.common.Player
import it.vfsfitvnm.route.RouteHandler import it.vfsfitvnm.route.RouteHandler
import it.vfsfitvnm.route.empty import it.vfsfitvnm.route.empty
import it.vfsfitvnm.vimusic.Database 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.rememberCreatePlaylistRoute
import it.vfsfitvnm.vimusic.ui.screens.rememberPlaylistOrAlbumRoute import it.vfsfitvnm.vimusic.ui.screens.rememberPlaylistOrAlbumRoute
import it.vfsfitvnm.vimusic.utils.* import it.vfsfitvnm.vimusic.utils.*
import it.vfsfitvnm.youtubemusic.models.NavigationEndpoint
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -152,7 +150,12 @@ fun NonQueuedMediaItemMenu(
onDismiss = onDismiss, onDismiss = onDismiss,
onStartRadio = { onStartRadio = {
binder?.player?.forcePlay(mediaItem) 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 = { onPlaySingle = {
binder?.player?.forcePlay(mediaItem) binder?.player?.forcePlay(mediaItem)

View File

@@ -159,7 +159,7 @@ fun ArtistScreen(
colorFilter = ColorFilter.tint(colorPalette.text), colorFilter = ColorFilter.tint(colorPalette.text),
modifier = Modifier modifier = Modifier
.clickable { .clickable {
binder?.startRadio(artist.shuffleEndpoint) binder?.playRadio(artist.shuffleEndpoint)
} }
.shadow(elevation = 2.dp, shape = CircleShape) .shadow(elevation = 2.dp, shape = CircleShape)
.background( .background(
@@ -176,7 +176,7 @@ fun ArtistScreen(
colorFilter = ColorFilter.tint(colorPalette.text), colorFilter = ColorFilter.tint(colorPalette.text),
modifier = Modifier modifier = Modifier
.clickable { .clickable {
binder?.startRadio(artist.radioEndpoint) binder?.playRadio(artist.radioEndpoint)
} }
.shadow(elevation = 2.dp, shape = CircleShape) .shadow(elevation = 2.dp, shape = CircleShape)
.background( .background(

View File

@@ -217,11 +217,11 @@ fun SearchResultScreen(
is YouTube.Item.Playlist -> playlistOrAlbumRoute(item.info.endpoint!!.browseId) is YouTube.Item.Playlist -> playlistOrAlbumRoute(item.info.endpoint!!.browseId)
is YouTube.Item.Song -> { is YouTube.Item.Song -> {
binder?.player?.forcePlay(item.asMediaItem) binder?.player?.forcePlay(item.asMediaItem)
binder?.startRadio(item.info.endpoint) binder?.setupRadio(item.info.endpoint)
} }
is YouTube.Item.Video -> { is YouTube.Item.Video -> {
binder?.player?.forcePlay(item.asMediaItem) binder?.player?.forcePlay(item.asMediaItem)
binder?.startRadio(item.info.endpoint) binder?.setupRadio(item.info.endpoint)
} }
} }
} }