Fix minor radio bug
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user