From 52627239e3f90e4b891764ee1d7d8ed7dfda3ee6 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Sun, 5 Jun 2022 17:59:29 +0200 Subject: [PATCH] Fix undesired radio restart when playing from SearchResultScreen --- .../it/vfsfitvnm/vimusic/ui/screens/SearchResultScreen.kt | 8 ++++++-- .../kotlin/it/vfsfitvnm/vimusic/utils/YoutubePlayer.kt | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) 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 93a6cfe..8ceacf7 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 @@ -202,11 +202,15 @@ fun SearchResultScreen( is YouTube.Item.Artist -> artistRoute(item.info.endpoint!!.browseId) is YouTube.Item.Song -> { player?.mediaController?.forcePlay(item.asMediaItem) - item.info.endpoint?.let(YoutubePlayer.Radio::setup) + item.info.endpoint?.let { + YoutubePlayer.Radio.setup(it, false) + } } is YouTube.Item.Video -> { player?.mediaController?.forcePlay(item.asMediaItem) - item.info.endpoint?.let(YoutubePlayer.Radio::setup) + item.info.endpoint?.let { + YoutubePlayer.Radio.setup(it, false) + } } } } diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/YoutubePlayer.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/YoutubePlayer.kt index 237a789..fae5a31 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/YoutubePlayer.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/YoutubePlayer.kt @@ -7,9 +7,9 @@ import com.google.common.util.concurrent.ListenableFuture import it.vfsfitvnm.youtubemusic.Outcome import it.vfsfitvnm.youtubemusic.YouTube import it.vfsfitvnm.youtubemusic.models.NavigationEndpoint -import kotlinx.coroutines.* +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.guava.await -import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.withContext class YoutubePlayer(mediaController: MediaController) : PlayerState(mediaController) { object Radio { @@ -34,7 +34,7 @@ class YoutubePlayer(mediaController: MediaController) : PlayerState(mediaControl nextContinuation = Outcome.Initial } - fun setup(watchEndpoint: NavigationEndpoint.Endpoint.Watch?) { + fun setup(watchEndpoint: NavigationEndpoint.Endpoint.Watch?, play: Boolean = true) { setup( videoId = watchEndpoint?.videoId, playlistId = watchEndpoint?.playlistId, @@ -42,7 +42,7 @@ class YoutubePlayer(mediaController: MediaController) : PlayerState(mediaControl playlistSetVideoId = watchEndpoint?.playlistSetVideoId ) - listener?.process(true) + listener?.process(play) } suspend fun process(player: Player, force: Boolean = false, play: Boolean = false) {