From d7f3c58fd9103e5f8f9e649b6a59943012047ad4 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 23 Oct 2024 10:05:23 -0600 Subject: [PATCH] detail: fix broken playing state updates --- .../main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt | 2 ++ .../main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt | 2 ++ .../main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt | 2 ++ .../java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt | 2 ++ app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt | 3 +-- app/src/main/java/org/oxycblt/auxio/music/service/Indexer.kt | 3 +++ .../oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt | 1 + app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt | 3 ++- 8 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt index dee23bc38..dd66d7a68 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -143,6 +143,8 @@ class AlbumDetailFragment : DetailFragment() { binding.detailShuffleButton?.setOnClickListener { playbackModel.shuffle(unlikelyToBeNull(detailModel.currentAlbum.value)) } + updatePlayback( + playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value) } private fun updateList(list: List) { diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt index 59afd9649..3b1352069 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -166,6 +166,8 @@ class ArtistDetailFragment : DetailFragment() { binding.detailShuffleButton?.setOnClickListener { playbackModel.shuffle(unlikelyToBeNull(detailModel.currentArtist.value)) } + updatePlayback( + playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value) } private fun updateList(list: List) { diff --git a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt index 4c53debb6..b12610f6e 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -135,6 +135,8 @@ class GenreDetailFragment : DetailFragment() { binding.detailShuffleButton?.setOnClickListener { playbackModel.shuffle(unlikelyToBeNull(detailModel.currentGenre.value)) } + updatePlayback( + playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value) } private fun updateList(list: List) { diff --git a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt index b34327745..f396909d7 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt @@ -237,6 +237,8 @@ class PlaylistDetailFragment : playbackModel.shuffle(unlikelyToBeNull(detailModel.currentPlaylist.value)) } } + updatePlayback( + playbackModel.song.value, playbackModel.parent.value, playbackModel.isPlaying.value) } private fun updateList(list: List) { diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt index ae8478178..19f24c27d 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt @@ -158,8 +158,7 @@ private class HomeGeneratorImpl( } else { sorted } - } - ?: emptyList() + } ?: emptyList() override fun genres() = musicRepository.deviceLibrary?.let { listSettings.genreSort.genres(it.genres) } diff --git a/app/src/main/java/org/oxycblt/auxio/music/service/Indexer.kt b/app/src/main/java/org/oxycblt/auxio/music/service/Indexer.kt index 495cbe8ce..aa1e12184 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/service/Indexer.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/service/Indexer.kt @@ -29,6 +29,7 @@ import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.ForegroundListener import org.oxycblt.auxio.ForegroundServiceNotification import org.oxycblt.auxio.music.IndexingState +import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicRepository import org.oxycblt.auxio.music.MusicSettings import org.oxycblt.auxio.playback.state.PlaybackStateManager @@ -155,6 +156,8 @@ private constructor( playbackManager.toSavedState()?.let { savedState -> playbackManager.applySavedState( savedState.copy( + parent = + savedState.parent?.let { musicRepository.find(it.uid) as? MusicParent? }, heap = savedState.heap.map { song -> song?.let { deviceLibrary.findSong(it.uid) } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt index ab88cda74..724da06ac 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt @@ -371,6 +371,7 @@ class ExoPlaybackStateHolder( ) { var sendNewPlaybackEvent = false var shouldSeek = false + L.d("invalidating parent ${this.parent?.songs} ${parent?.songs}") if (this.parent != parent) { this.parent = parent sendNewPlaybackEvent = true diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt index 4c2550d66..9dc85edc8 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt @@ -157,7 +157,8 @@ class WidgetProvider : AppWidgetProvider() { fun reset(context: Context, uiSettings: UISettings) { L.d("Using default layout") val layout = newDefaultLayout(context, uiSettings) - AppWidgetManager.getInstance(context).updateAppWidget(ComponentName(context, this::class.java), layout) + AppWidgetManager.getInstance(context) + .updateAppWidget(ComponentName(context, this::class.java), layout) } // --- INTERNAL METHODS ---