diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eba3282f..8901e55c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 3.6.3 + +#### What's Fixed +- Fixed broken replaygain +- Fixed hide collaborators being broken +- Fixed crash when navigating to artists w/appearances +- Fixed headers appearing on empty detail sections + ## 3.6.2 #### What's Fixed diff --git a/README.md b/README.md index 3fe6cd628..3e99eeb61 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@

Auxio

A simple, rational music player for android.

- - Latest Version + + Latest Version Releases diff --git a/app/build.gradle b/app/build.gradle index f5dbf1b1f..66642458e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ android { defaultConfig { applicationId namespace - versionName "3.6.2" - versionCode 52 + versionName "3.6.3" + versionCode 53 minSdk 24 targetSdk 34 diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailGenerator.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailGenerator.kt index 348badcdb..1f1670957 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailGenerator.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailGenerator.kt @@ -156,21 +156,19 @@ private class DetailGeneratorImpl( } if (artist.implicitAlbums.isNotEmpty()) { - // groupByTo normally returns a mapping to a MutableList mapping. Since MutableList - // inherits list, we can cast upwards and save a copy by directly inserting the - // implicit album list into the mapping. logD("Implicit albums present, adding to list") - @Suppress("UNCHECKED_CAST") - (grouping as MutableMap>)[ - DetailSection.Albums.Category.APPEARANCES] = artist.implicitAlbums + grouping[DetailSection.Albums.Category.APPEARANCES] = + artist.implicitAlbums.toMutableList() } val sections = grouping.mapTo(mutableListOf()) { (category, albums) -> DetailSection.Albums(category, ARTIST_ALBUM_SORT.albums(albums)) } - val songs = DetailSection.Songs(listSettings.artistSongSort.songs(artist.songs)) - sections.add(songs) + if (artist.songs.isNotEmpty()) { + val songs = DetailSection.Songs(listSettings.artistSongSort.songs(artist.songs)) + sections.add(songs) + } return Detail(artist, sections) } @@ -183,8 +181,11 @@ private class DetailGeneratorImpl( override fun playlist(uid: Music.UID): Detail? { val playlist = musicRepository.userLibrary?.findPlaylist(uid) ?: return null - val songs = DetailSection.Songs(playlist.songs) - return Detail(playlist, listOf(songs)) + if (playlist.songs.isNotEmpty()) { + val songs = DetailSection.Songs(playlist.songs) + return Detail(playlist, listOf(songs)) + } + return Detail(playlist, listOf()) } private companion object { diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt index 52135d3d4..e8b9c5451 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt @@ -87,10 +87,7 @@ private class HomeGeneratorImpl( } override fun onHideCollaboratorsChanged() { - // Changes in the hide collaborator setting will change the artist contents - // of the library, consider it a library update. - logD("Collaborator setting changed, forwarding update") - onMusicChanges(MusicRepository.Changes(deviceLibrary = true, userLibrary = false)) + invalidator.invalidateMusic(MusicType.ARTISTS, UpdateInstructions.Diff) } override fun onSongSortChanged() { @@ -151,7 +148,14 @@ private class HomeGeneratorImpl( ?: emptyList() override fun artists() = - musicRepository.deviceLibrary?.let { listSettings.artistSort.artists(it.artists) } + musicRepository.deviceLibrary?.let { deviceLibrary -> + val sorted = listSettings.artistSort.artists(deviceLibrary.artists) + if (homeSettings.shouldHideCollaborators) { + sorted.filter { it.explicitAlbums.isNotEmpty() } + } else { + sorted + } + } ?: emptyList() override fun genres() = diff --git a/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt b/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt index 2947052c2..95dd0ae73 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/service/ExoPlaybackStateHolder.kt @@ -88,20 +88,22 @@ class ExoPlaybackStateHolder( private set fun attach() { - imageSettings.registerListener(this) - player.addListener(this) playbackManager.registerStateHolder(this) - playbackSettings.registerListener(this) musicRepository.addUpdateListener(this) + player.addListener(this) + replayGainProcessor.attach() + playbackSettings.registerListener(this) + imageSettings.registerListener(this) } fun release() { saveJob.cancel() - player.removeListener(this) playbackManager.unregisterStateHolder(this) musicRepository.removeUpdateListener(this) + player.removeListener(this) replayGainProcessor.release() imageSettings.unregisterListener(this) + playbackSettings.unregisterListener(this) player.release() } diff --git a/fastlane/metadata/android/en-US/changelogs/53.txt b/fastlane/metadata/android/en-US/changelogs/53.txt new file mode 100644 index 000000000..e4ffd070e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/53.txt @@ -0,0 +1,3 @@ +Auxio 3.6.0 improves support for android auto and fixes several small regressions. +This release fixes critical UI and playback issues identified in the previous version. +For more information, see https://github.com/OxygenCobalt/Auxio/releases/tag/v3.6.0. \ No newline at end of file