detail: fix up navigation

No clue why this is happening, but I assume another classic android
moment has occurred and now I can't navigate away when objects are
invalidated unless I navigate away twice. Because reasons. Amazingly
designed platform.

Resolves #989.
This commit is contained in:
Alexander Capehart 2025-02-21 10:54:58 -07:00
parent 357c7cc329
commit bfdccd3ba5
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
5 changed files with 12 additions and 5 deletions

View file

@ -106,7 +106,7 @@ class AlbumDetailFragment : DetailFragment<Album, Song>() {
private fun updateAlbum(album: Album?) {
if (album == null) {
L.d("No album to show, navigating away")
findNavController().navigateUp()
exit()
return
}

View file

@ -113,7 +113,7 @@ class ArtistDetailFragment : DetailFragment<Artist, Music>() {
private fun updateArtist(artist: Artist?) {
if (artist == null) {
L.d("No artist to show, navigating away")
findNavController().navigateUp()
exit()
return
}
val binding = requireBinding()

View file

@ -22,6 +22,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import androidx.fragment.app.activityViewModels
import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.GridLayoutManager
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.transition.MaterialSharedAxis
@ -129,4 +130,11 @@ abstract class DetailFragment<P : MusicParent, C : Music> :
}
abstract fun onOpenParentMenu()
protected fun exit() {
// For some insane and absurd reason we wont actually navigate away in detail views
// until this is called twice.
findNavController().navigateUp()
findNavController().navigateUp()
}
}

View file

@ -112,7 +112,7 @@ class GenreDetailFragment : DetailFragment<Genre, Music>() {
private fun updateGenre(genre: Genre?) {
if (genre == null) {
L.d("No genre to show, navigating away")
findNavController().navigateUp()
exit()
return
}
val binding = requireBinding()

View file

@ -184,8 +184,7 @@ class PlaylistDetailFragment :
private fun updatePlaylist(playlist: Playlist?, editedPlaylist: List<Song>?) {
if (playlist == null) {
// Playlist we were showing no longer exists.
findNavController().navigateUp()
exit()
return
}
val binding = requireBinding()