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 2448453d0..23d1d9860 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -112,15 +112,12 @@ class AlbumDetailFragment : DetailFragment() { // --- PLAYBACKVIEWMODEL SETUP --- - playbackModel.song.observe(viewLifecycleOwner) { song -> - if (playbackModel.mode.value == PlaybackMode.IN_ALBUM && - playbackModel.parent.value?.id == detailModel.currentAlbum.value!!.id - ) { - detailAdapter.highlightSong(song, binding.detailRecycler) - } else { - // Clear the viewholders if the mode isn't ALL_SONGS - detailAdapter.highlightSong(null, binding.detailRecycler) - } + playbackModel.song.observe(viewLifecycleOwner) { + handlePlayingItem(detailAdapter) + } + + playbackModel.mode.observe(viewLifecycleOwner) { + handlePlayingItem(detailAdapter) } playbackModel.isInUserQueue.observe(viewLifecycleOwner) { @@ -134,6 +131,21 @@ class AlbumDetailFragment : DetailFragment() { return binding.root } + /** + * Handle an update to the mode or the song and determine whether to highlight a song + * item based off that + */ + private fun handlePlayingItem(detailAdapter: AlbumDetailAdapter) { + if (playbackModel.mode.value == PlaybackMode.IN_ALBUM && + playbackModel.parent.value?.id == detailModel.currentAlbum.value!!.id + ) { + detailAdapter.highlightSong(playbackModel.song.value, binding.detailRecycler) + } else { + // Clear the viewholders if the mode isn't ALL_SONGS + detailAdapter.highlightSong(null, binding.detailRecycler) + } + } + /** * Scroll to the currently playing item. */ 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 30c49242f..d9332e4db 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -87,15 +87,12 @@ class GenreDetailFragment : DetailFragment() { // --- PLAYBACKVIEWMODEL SETUP --- - playbackModel.song.observe(viewLifecycleOwner) { song -> - if (playbackModel.mode.value == PlaybackMode.IN_GENRE && - playbackModel.parent.value?.id == detailModel.currentGenre.value!!.id - ) { - detailAdapter.highlightSong(song, binding.detailRecycler) - } else { - // Clear the viewholders if the mode isn't ALL_SONGS - detailAdapter.highlightSong(null, binding.detailRecycler) - } + playbackModel.song.observe(viewLifecycleOwner) { + handlePlayingItem(detailAdapter) + } + + playbackModel.mode.observe(viewLifecycleOwner) { + handlePlayingItem(detailAdapter) } playbackModel.isInUserQueue.observe(viewLifecycleOwner) { @@ -108,4 +105,19 @@ class GenreDetailFragment : DetailFragment() { return binding.root } + + /** + * Handle an update to the mode or the song and determine whether to highlight a song + * item based off that + */ + private fun handlePlayingItem(detailAdapter: GenreDetailAdapter) { + if (playbackModel.mode.value == PlaybackMode.IN_GENRE && + playbackModel.parent.value?.id == detailModel.currentGenre.value!!.id + ) { + detailAdapter.highlightSong(playbackModel.song.value, binding.detailRecycler) + } else { + // Clear the viewholders if the mode isn't ALL_SONGS + detailAdapter.highlightSong(null, binding.detailRecycler) + } + } }