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
}
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) {

View File

@@ -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)

View File

@@ -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(

View File

@@ -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)
}
}
}