[Android] Ask write permission before deleting files on TV

Nicolas Pomepuy git at videolan.org
Tue Dec 10 10:57:49 UTC 2024


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue Dec 10 11:45:36 2024 +0100| [4e2fec9a2f0a472592f7ab062d7c7a3f925e925a] | committer: Nicolas Pomepuy

Ask write permission before deleting files on TV

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

 .../television/ui/MediaItemDetailsFragment.kt      | 30 +++++++++++++---------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/application/television/src/main/java/org/videolan/television/ui/MediaItemDetailsFragment.kt b/application/television/src/main/java/org/videolan/television/ui/MediaItemDetailsFragment.kt
index 5e04b4d51d..a07a69b186 100644
--- a/application/television/src/main/java/org/videolan/television/ui/MediaItemDetailsFragment.kt
+++ b/application/television/src/main/java/org/videolan/television/ui/MediaItemDetailsFragment.kt
@@ -353,20 +353,12 @@ class MediaItemDetailsFragment : DetailsSupportFragment(), CoroutineScope by Mai
                 }
                 ID_DELETE -> {
                     if (!Permissions.canWriteStorage(requireActivity())) {
-                        onDeleteFailed(viewModel.media)
-                        return at OnActionClickedListener
-                    }
-                    val dialog = ConfirmDeleteDialog.newInstance(arrayListOf(viewModel.media))
-                    dialog.show(requireActivity().supportFragmentManager, ConfirmDeleteDialog::class.simpleName)
-                    dialog.setListener {
-                        dialog.dismiss()
-                        var preventFinish = false
-                        MediaUtils.deleteItem(requireActivity(), viewModel.media) {
-                            onDeleteFailed(it)
-                            preventFinish = true
+                        Permissions.askWriteStoragePermission(requireActivity(), false) {
+                            delete()
                         }
-                        if (!preventFinish) requireActivity().finish()
+                        return at OnActionClickedListener
                     }
+                    delete()
                 }
                 ID_PLAYLIST -> requireActivity().addToPlaylist(arrayListOf(viewModel.media))
                 ID_FAVORITE_ADD -> {
@@ -484,6 +476,20 @@ class MediaItemDetailsFragment : DetailsSupportFragment(), CoroutineScope by Mai
             //    updateMetadata(mediaMetadataModel.updateLiveData.value)
         }
     }
+
+    private fun delete() {
+        val dialog = ConfirmDeleteDialog.newInstance(arrayListOf(viewModel.media))
+        dialog.show(requireActivity().supportFragmentManager, ConfirmDeleteDialog::class.simpleName)
+        dialog.setListener {
+            dialog.dismiss()
+            var preventFinish = false
+            MediaUtils.deleteItem(requireActivity(), viewModel.media) {
+                onDeleteFailed(it)
+                preventFinish = true
+            }
+            if (!preventFinish) requireActivity().finish()
+        }
+    }
 }
 
 class MediaItemDetailsModel(context: Application) : AndroidViewModel(context), CoroutineScope by MainScope() {



More information about the Android mailing list