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">