From 8ab092d2ca9269c2844c0c791bd729f552b91c70 Mon Sep 17 00:00:00 2001 From: Damontecres Date: Tue, 7 Oct 2025 15:27:18 -0400 Subject: [PATCH] Simplify playback next up --- .../dolphin/ui/playback/NextUpEpisode.kt | 2 +- .../dolphin/ui/playback/PlaybackViewModel.kt | 52 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/playback/NextUpEpisode.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/playback/NextUpEpisode.kt index 082f1449..b6b69eec 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/playback/NextUpEpisode.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/playback/NextUpEpisode.kt @@ -72,7 +72,7 @@ fun NextUpEpisode( modifier = Modifier.fillMaxWidth(), ) Row( - horizontalArrangement = Arrangement.spacedBy(16.dp), + horizontalArrangement = Arrangement.spacedBy(32.dp), verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(8.dp), ) { diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/playback/PlaybackViewModel.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/playback/PlaybackViewModel.kt index d7cbddef..4c36c8b3 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/playback/PlaybackViewModel.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/playback/PlaybackViewModel.kt @@ -18,6 +18,7 @@ import com.github.damontecres.dolphin.data.model.BaseItem import com.github.damontecres.dolphin.data.model.Chapter import com.github.damontecres.dolphin.preferences.UserPreferences import com.github.damontecres.dolphin.ui.DefaultItemFields +import com.github.damontecres.dolphin.ui.indexOfFirstOrNull import com.github.damontecres.dolphin.ui.nav.Destination import com.github.damontecres.dolphin.util.ApiRequestPager import com.github.damontecres.dolphin.util.ExceptionHandler @@ -427,37 +428,35 @@ class PlaybackViewModel fun getEpisodes(seriesId: UUID) { viewModelScope.launch(Dispatchers.IO) { - val episodes = - if (!this@PlaybackViewModel.episodes.isInitialized) { - val request = - GetEpisodesRequest(seriesId = seriesId, fields = DefaultItemFields) - val pager = - ApiRequestPager(api, request, GetEpisodesRequestHandler, viewModelScope) - pager.init() - currentEpisodeIndex = pager.indexOfBlocking { it?.id == itemId } - pager - } else { - this@PlaybackViewModel.episodes.value!! - } + val request = + GetEpisodesRequest( + seriesId = seriesId, + fields = DefaultItemFields, + startItemId = itemId, + limit = 2, + ) + val episodes = GetEpisodesRequestHandler.execute(api, request).content.items + val currentEpisodeIndex = episodes.indexOfFirstOrNull { it.id == itemId } Timber.v("Current episode is $currentEpisodeIndex of ${episodes.size}") - val nextIndex = currentEpisodeIndex + 1 - if (nextIndex < episodes.size) { - val listener = - object : Player.Listener { - override fun onPlaybackStateChanged(playbackState: Int) { - if (playbackState == Player.STATE_ENDED) { - viewModelScope.launch(Dispatchers.IO) { - val nextItem = episodes.getBlocking(nextIndex) - Timber.v("Setting next up episode to ${nextItem?.id}") - withContext(Dispatchers.Main) { - nextUpEpisode.value = nextItem + if (currentEpisodeIndex != null) { + val nextIndex = currentEpisodeIndex + 1 + if (nextIndex < episodes.size) { + val listener = + object : Player.Listener { + override fun onPlaybackStateChanged(playbackState: Int) { + if (playbackState == Player.STATE_ENDED) { + viewModelScope.launch(Dispatchers.IO) { + val nextItem = BaseItem.from(episodes[nextIndex], api) + Timber.v("Setting next up episode to ${nextItem.id}") + withContext(Dispatchers.Main) { + nextUpEpisode.value = nextItem + } } + player.removeListener(this) } - player.removeListener(this) } } - } - player.addListener(listener) + player.addListener(listener) // viewModelScope.launch(Dispatchers.IO) { // while (this.isActive) { @@ -476,6 +475,7 @@ class PlaybackViewModel // } // } // } + } } } }