[Android] SavePlaylistDialog code cleanup

Nicolas Pomepuy git at videolan.org
Fri Mar 14 09:31:18 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Fri Mar  7 06:43:32 2025 +0100| [ff002c70b32af1b7ce8092f28d97678a3db4c24c] | committer: Nicolas Pomepuy

SavePlaylistDialog code cleanup

> https://code.videolan.org/videolan/vlc-android/commit/ff002c70b32af1b7ce8092f28d97678a3db4c24c
---

 .../org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt  | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt
index 8903512c19..a3e2b3d7e0 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt
@@ -30,7 +30,9 @@ import android.view.View
 import android.view.ViewGroup
 import android.view.inputmethod.EditorInfo
 import android.widget.TextView
+import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED
@@ -120,7 +122,6 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener,
         }
         adapter.defaultCover = UiTools.getDefaultPlaylistDrawable(requireActivity())
         newTracks = try {
-            @Suppress("UNCHECKED_CAST")
             val tracks = requireArguments().parcelableArray<MediaWrapper>(KEY_NEW_TRACKS) as Array<MediaWrapper>
             filesText = resources.getQuantityString(R.plurals.media_quantity, tracks.size, tracks.size)
             tracks
@@ -130,11 +131,13 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener,
 
                     isLoading = true
                     val viewModel = getBrowserModel(category = TYPE_FILE, url = folder)
-                    if (requireArguments().getBoolean(KEY_SUB_FOLDERS, false)) lifecycleScope.launchWhenStarted {
-                        withContext(Dispatchers.IO) {
-                            newTracks = (viewModel.provider as FileBrowserProvider).browseByUrl(folder).toTypedArray()
-                            isLoading = false
-                            filesText = resources.getQuantityString(R.plurals.media_quantity, newTracks.size, newTracks.size)
+                    if (requireArguments().getBoolean(KEY_SUB_FOLDERS, false)) lifecycleScope.launch(Dispatchers.Main) {
+                        viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
+                            withContext(Dispatchers.IO) {
+                                newTracks = (viewModel.provider as FileBrowserProvider).browseByUrl(folder).toTypedArray()
+                                isLoading = false
+                                filesText = resources.getQuantityString(R.plurals.media_quantity, newTracks.size, newTracks.size)
+                            }
                         }
                     } else {
                         viewModel.dataset.observe(this) { mediaLibraryItems ->
@@ -157,7 +160,7 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener,
         if (::dataObserver.isInitialized) adapter.unregisterAdapterDataObserver(dataObserver)
     }
 
-    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
         binding = DialogPlaylistBinding.inflate(layoutInflater, container, false)
         binding.isLoading = isLoading
         binding.filesText = filesText



More information about the Android mailing list