From 4fd1835dc637104ec1f59824052b7cdbc50cae78 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Wed, 19 Mar 2025 21:16:54 +0100 Subject: [PATCH] fix: current playlist doesn't close after deletion --- .../libretube/ui/dialogs/DeletePlaylistDialog.kt | 13 ++++++++----- .../libretube/ui/fragments/LibraryFragment.kt | 7 ++++--- .../libretube/ui/fragments/PlaylistFragment.kt | 3 ++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/DeletePlaylistDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/DeletePlaylistDialog.kt index fe5c4d6c6..374d4d4f8 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/DeletePlaylistDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/DeletePlaylistDialog.kt @@ -41,11 +41,14 @@ class DeletePlaylistDialog : DialogFragment() { context.toastFromMainDispatcher( if (success) R.string.success else R.string.fail ) - setFragmentResult( - PlaylistOptionsBottomSheet.PLAYLIST_OPTIONS_REQUEST_KEY, - bundleOf(IntentData.playlistTask to true) - ) - withContext(Dispatchers.Main) { dismiss() } + withContext(Dispatchers.Main) { + dismiss() + + setFragmentResult( + PlaylistOptionsBottomSheet.PLAYLIST_OPTIONS_REQUEST_KEY, + bundleOf(IntentData.playlistTask to true) + ) + } } } } diff --git a/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt index eff2fbece..4e96d7b3e 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt @@ -186,9 +186,10 @@ class LibraryFragment : DynamicLayoutManagerFragment(R.layout.fragment_library) val binding = _binding ?: return@repeatOnLifecycle binding.playlistRefresh.isRefreshing = false - if (playlists.isNotEmpty()) { - showPlaylists(playlists) - } else { + // also update playlists recycler when the playlists are empty in order to remove + // playlists that were removed by the user + showPlaylists(playlists) + if (playlists.isEmpty()) { binding.sortTV.isVisible = false binding.nothingHere.isVisible = true } diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt index 1217173ef..1e2cdd307 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt @@ -14,6 +14,7 @@ import androidx.core.view.isVisible import androidx.core.view.updatePadding import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope +import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -192,7 +193,7 @@ class PlaylistFragment : DynamicLayoutManagerFragment(R.layout.fragment_playlist } if (isPlaylistToBeDeleted) { - // TODO move back: navController().popBackStack() crashes + findNavController().popBackStack() return@setFragmentResultListener } }