music: fix mediaitem library update logic

This commit is contained in:
Alexander Capehart 2024-04-12 13:58:53 -06:00
parent 3a4ddb43b9
commit 07b17caf8f
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
2 changed files with 14 additions and 8 deletions

View file

@ -69,21 +69,25 @@ constructor(
override fun onMusicChanges(changes: MusicRepository.Changes) {
val deviceLibrary = musicRepository.deviceLibrary
var invalidateSearch = false
val invalidate = mutableListOf<MediaSessionUID>()
if (changes.deviceLibrary && deviceLibrary != null) {
val ids =
MediaSessionUID.Category.IMPORTANT +
deviceLibrary.albums.map { MediaSessionUID.Single(it.uid) } +
deviceLibrary.artists.map { MediaSessionUID.Single(it.uid) } +
deviceLibrary.genres.map { MediaSessionUID.Single(it.uid) }
invalidator?.invalidate(ids.map { it.toString() })
invalidate.addAll(MediaSessionUID.Category.DEVICE_MUSIC)
deviceLibrary.albums.mapTo(invalidate) { MediaSessionUID.Single(it.uid) }
deviceLibrary.artists.mapTo(invalidate) { MediaSessionUID.Single(it.uid) }
deviceLibrary.genres.mapTo(invalidate) { MediaSessionUID.Single(it.uid) }
invalidateSearch = true
}
val userLibrary = musicRepository.userLibrary
if (changes.userLibrary && userLibrary != null) {
val ids = userLibrary.playlists.map { MediaSessionUID.Single(it.uid) }
invalidator?.invalidate(ids.map { it.toString() })
invalidate.addAll(MediaSessionUID.Category.USER_MUSIC)
userLibrary.playlists.mapTo(invalidate) { MediaSessionUID.Single(it.uid) }
invalidateSearch = true
}
if (invalidate.isNotEmpty()) {
invalidator?.invalidate(invalidate.map { it.toString() })
}
if (invalidateSearch) {
for (entry in searchResults.entries) {
entry.value.cancel()

View file

@ -217,6 +217,8 @@ sealed interface MediaSessionUID {
override fun toString() = "$ID_CATEGORY:$id"
companion object {
val DEVICE_MUSIC = listOf(ROOT, SONGS, ALBUMS, ARTISTS, GENRES)
val USER_MUSIC = listOf(ROOT, PLAYLISTS)
val IMPORTANT = listOf(SONGS, ALBUMS, ARTISTS, GENRES, PLAYLISTS)
}
}