diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt index c49ccd9e2..96a3268b6 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackViewModel.kt @@ -91,8 +91,7 @@ class PlaybackViewModel(application: Application) : /** Play a [song] with the [mode] specified, */ fun play(song: Song, mode: PlaybackMode) { - playbackManager.play( - song, settings.keepShuffle && playbackManager.isPlaying, mode, settings) + playbackManager.play(song, mode, settings) } /** diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt index 451bc540d..092412231 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt @@ -148,7 +148,7 @@ class PlaybackStateManager private constructor() { * Play a [song]. * @param playbackMode The [PlaybackMode] to construct the queue off of. */ - fun play(song: Song, shuffle: Boolean, playbackMode: PlaybackMode, settings: Settings) { + fun play(song: Song, playbackMode: PlaybackMode, settings: Settings) { val library = musicStore.library ?: return synchronized(this) { @@ -160,7 +160,7 @@ class PlaybackStateManager private constructor() { PlaybackMode.IN_GENRE -> song.genre } - applyNewQueue(library, settings, shuffle, song) + applyNewQueue(library, settings, settings.keepShuffle && isShuffled, song) seekTo(0) notifyNewPlayback() notifyShuffledChanged() diff --git a/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt b/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt index 74ac38ae2..5372eecb2 100644 --- a/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/util/FrameworkUtil.kt @@ -169,17 +169,27 @@ fun Fragment.launch( viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.repeatOnLifecycle(state, block) } } +/** + * Shortcut to generate a AndroidViewModel [T] without having to specify the bloated factory syntax. + */ inline fun Fragment.androidViewModels() = viewModels { ViewModelProvider.AndroidViewModelFactory(requireActivity().application) } +/** + * Shortcut to generate a AndroidViewModel [T] without having to specify the bloated factory syntax. + */ inline fun AppCompatActivity.androidViewModels() = viewModels { ViewModelProvider.AndroidViewModelFactory(application) } +/** + * Shortcut to generate a AndroidViewModel [T] without having to specify the bloated factory syntax. + */ inline fun Fragment.androidActivityViewModels() = activityViewModels { ViewModelProvider.AndroidViewModelFactory(requireActivity().application) } +/** Shortcut to get the [Application] from an [AndroidViewModel] */ val AndroidViewModel.application: Application get() = getApplication()