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.
-
-
+
+
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