Fix playing item highlighting issue
Fix an issue if one plays a song from all songs and then attempts to play a song from its genre/album, the song will not highlight despite it supposely playing.
This commit is contained in:
parent
4f8ddb793f
commit
e029785181
2 changed files with 42 additions and 18 deletions
|
@ -112,15 +112,12 @@ class AlbumDetailFragment : DetailFragment() {
|
||||||
|
|
||||||
// --- PLAYBACKVIEWMODEL SETUP ---
|
// --- PLAYBACKVIEWMODEL SETUP ---
|
||||||
|
|
||||||
playbackModel.song.observe(viewLifecycleOwner) { song ->
|
playbackModel.song.observe(viewLifecycleOwner) {
|
||||||
if (playbackModel.mode.value == PlaybackMode.IN_ALBUM &&
|
handlePlayingItem(detailAdapter)
|
||||||
playbackModel.parent.value?.id == detailModel.currentAlbum.value!!.id
|
}
|
||||||
) {
|
|
||||||
detailAdapter.highlightSong(song, binding.detailRecycler)
|
playbackModel.mode.observe(viewLifecycleOwner) {
|
||||||
} else {
|
handlePlayingItem(detailAdapter)
|
||||||
// Clear the viewholders if the mode isn't ALL_SONGS
|
|
||||||
detailAdapter.highlightSong(null, binding.detailRecycler)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
playbackModel.isInUserQueue.observe(viewLifecycleOwner) {
|
playbackModel.isInUserQueue.observe(viewLifecycleOwner) {
|
||||||
|
@ -134,6 +131,21 @@ class AlbumDetailFragment : DetailFragment() {
|
||||||
return binding.root
|
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.
|
* Scroll to the currently playing item.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -87,15 +87,12 @@ class GenreDetailFragment : DetailFragment() {
|
||||||
|
|
||||||
// --- PLAYBACKVIEWMODEL SETUP ---
|
// --- PLAYBACKVIEWMODEL SETUP ---
|
||||||
|
|
||||||
playbackModel.song.observe(viewLifecycleOwner) { song ->
|
playbackModel.song.observe(viewLifecycleOwner) {
|
||||||
if (playbackModel.mode.value == PlaybackMode.IN_GENRE &&
|
handlePlayingItem(detailAdapter)
|
||||||
playbackModel.parent.value?.id == detailModel.currentGenre.value!!.id
|
}
|
||||||
) {
|
|
||||||
detailAdapter.highlightSong(song, binding.detailRecycler)
|
playbackModel.mode.observe(viewLifecycleOwner) {
|
||||||
} else {
|
handlePlayingItem(detailAdapter)
|
||||||
// Clear the viewholders if the mode isn't ALL_SONGS
|
|
||||||
detailAdapter.highlightSong(null, binding.detailRecycler)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
playbackModel.isInUserQueue.observe(viewLifecycleOwner) {
|
playbackModel.isInUserQueue.observe(viewLifecycleOwner) {
|
||||||
|
@ -108,4 +105,19 @@ class GenreDetailFragment : DetailFragment() {
|
||||||
|
|
||||||
return binding.root
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue