From bfdccd3ba53a26fb5f91d46a567b9c2aa537c2de Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Fri, 21 Feb 2025 10:54:58 -0700 Subject: [PATCH] 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. --- .../java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt | 2 +- .../java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt | 2 +- .../main/java/org/oxycblt/auxio/detail/DetailFragment.kt | 8 ++++++++ .../java/org/oxycblt/auxio/detail/GenreDetailFragment.kt | 2 +- .../org/oxycblt/auxio/detail/PlaylistDetailFragment.kt | 3 +-- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt index 48785f276..835d9d44e 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -106,7 +106,7 @@ class AlbumDetailFragment : DetailFragment() { private fun updateAlbum(album: Album?) { if (album == null) { L.d("No album to show, navigating away") - findNavController().navigateUp() + exit() return } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt index f2db3bab5..b57705ac3 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -113,7 +113,7 @@ class ArtistDetailFragment : DetailFragment() { private fun updateArtist(artist: Artist?) { if (artist == null) { L.d("No artist to show, navigating away") - findNavController().navigateUp() + exit() return } val binding = requireBinding() diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailFragment.kt index 906b166cc..ca41a753a 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailFragment.kt @@ -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

: } 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() + } } diff --git a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt index fdc40cc17..98dd405c7 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -112,7 +112,7 @@ class GenreDetailFragment : DetailFragment() { private fun updateGenre(genre: Genre?) { if (genre == null) { L.d("No genre to show, navigating away") - findNavController().navigateUp() + exit() return } val binding = requireBinding() diff --git a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt index b29ca2bd9..cbad1e7d4 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt @@ -184,8 +184,7 @@ class PlaylistDetailFragment : private fun updatePlaylist(playlist: Playlist?, editedPlaylist: List?) { if (playlist == null) { - // Playlist we were showing no longer exists. - findNavController().navigateUp() + exit() return } val binding = requireBinding()