From dc51c84c54c4b429795a2fd0cacd405576cb2803 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Thu, 4 Apr 2024 12:11:23 -0600 Subject: [PATCH] home: handle playback decision event Forgot to add this. Resolves #734. --- CHANGELOG.md | 7 ++++++ .../org/oxycblt/auxio/home/HomeFragment.kt | 22 ++++++++++++++++--- .../playback/decision/PlayFromArtistDialog.kt | 2 +- .../playback/decision/PlayFromGenreDialog.kt | 2 +- .../service/PlaybackServiceFragment.kt | 5 +---- app/src/main/res/navigation/inner.xml | 4 ++-- 6 files changed, 31 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74f7b60b9..a9a877142 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## dev + +#### What's Fixed +- Fixed crash when using play next on the end of a queue or with a single-song queue +- Fixed weird behavior if using play next on the end of a queue with repeat all enabled +- Fixed artist choice dialog not showing up on home screen if playing from artist/genre was enabled + ## 3.4.2 #### What's Fixed diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt index 41a1055a7..5744a389e 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -75,6 +75,7 @@ import org.oxycblt.auxio.music.PlaylistDecision import org.oxycblt.auxio.music.PlaylistMessage import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.external.M3U +import org.oxycblt.auxio.playback.PlaybackDecision import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.util.collect import org.oxycblt.auxio.util.collectImmediately @@ -214,12 +215,13 @@ class HomeFragment : collectImmediately(homeModel.currentTabType, ::updateCurrentTab) collectImmediately(homeModel.songList, homeModel.isFastScrolling, ::updateFab) collect(homeModel.speedDialOpen, ::updateSpeedDial) + collect(detailModel.toShow.flow, ::handleShow) collect(listModel.menu.flow, ::handleMenu) collectImmediately(listModel.selected, ::updateSelection) collectImmediately(musicModel.indexingState, ::updateIndexerState) - collect(musicModel.playlistDecision.flow, ::handleDecision) + collect(musicModel.playlistDecision.flow, ::handlePlaylistDecision) collectImmediately(musicModel.playlistMessage.flow, ::handlePlaylistMessage) - collect(detailModel.toShow.flow, ::handleShow) + collect(playbackModel.playbackDecision.flow, ::handlePlaybackDecision) } override fun onResume() { @@ -487,7 +489,7 @@ class HomeFragment : } } - private fun handleDecision(decision: PlaylistDecision?) { + private fun handlePlaylistDecision(decision: PlaylistDecision?) { if (decision == null) return val directions = when (decision) { @@ -539,6 +541,20 @@ class HomeFragment : musicModel.playlistMessage.consume() } + private fun handlePlaybackDecision(decision: PlaybackDecision?) { + when (decision) { + is PlaybackDecision.PlayFromArtist -> { + findNavController() + .navigateSafe(HomeFragmentDirections.playFromArtist(decision.song.uid)) + } + is PlaybackDecision.PlayFromGenre -> { + findNavController() + .navigateSafe(HomeFragmentDirections.playFromGenre(decision.song.uid)) + } + null -> {} + } + } + private fun updateFab(songs: List, isFastScrolling: Boolean) { updateFabVisibility(songs, isFastScrolling, homeModel.currentTabType.value) } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/decision/PlayFromArtistDialog.kt b/app/src/main/java/org/oxycblt/auxio/playback/decision/PlayFromArtistDialog.kt index 8e318ab3c..67f295466 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/decision/PlayFromArtistDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/decision/PlayFromArtistDialog.kt @@ -70,7 +70,7 @@ class PlayFromArtistDialog : } playbackModel.playbackDecision.consume() - pickerModel.setPickerSongUid(args.artistUid) + pickerModel.setPickerSongUid(args.songUid) collectImmediately(pickerModel.currentPickerSong, ::updateSong) } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/decision/PlayFromGenreDialog.kt b/app/src/main/java/org/oxycblt/auxio/playback/decision/PlayFromGenreDialog.kt index 831e5c6e0..dfc522d3c 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/decision/PlayFromGenreDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/decision/PlayFromGenreDialog.kt @@ -70,7 +70,7 @@ class PlayFromGenreDialog : } playbackModel.playbackDecision.consume() - pickerModel.setPickerSongUid(args.genreUid) + pickerModel.setPickerSongUid(args.songUid) collectImmediately(pickerModel.currentPickerSong, ::updateSong) } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt index d3d41f61e..833ef1290 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/PlaybackServiceFragment.kt @@ -368,10 +368,7 @@ constructor( C.INDEX_UNSET } else { currTimeline.getNextWindowIndex( - player.currentMediaItemIndex, - Player.REPEAT_MODE_OFF, - player.shuffleModeEnabled - ) + player.currentMediaItemIndex, Player.REPEAT_MODE_OFF, player.shuffleModeEnabled) } if (nextIndex == C.INDEX_UNSET) { diff --git a/app/src/main/res/navigation/inner.xml b/app/src/main/res/navigation/inner.xml index c688464cb..ff6f18d10 100644 --- a/app/src/main/res/navigation/inner.xml +++ b/app/src/main/res/navigation/inner.xml @@ -491,7 +491,7 @@ android:label="play_from_artist_dialog" tools:layout="@layout/dialog_music_choices"> @@ -501,7 +501,7 @@ android:label="play_from_genre_dialog" tools:layout="@layout/dialog_music_choices">