Przeglądaj źródła

Merge pull request #104 from ente-io/delete_from_ente

Delete from ente only
Vishnu Mohandas 3 lat temu
rodzic
commit
dd8fe294d4

+ 11 - 0
lib/ui/gallery_app_bar_widget.dart

@@ -499,6 +499,17 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
           showToast("files deleted from device");
         },
       ));
+      actions.add(CupertinoActionSheetAction(
+        child: Text("ente"),
+        isDestructiveAction: true,
+        onPressed: () async {
+          Navigator.of(context, rootNavigator: true).pop();
+          await deleteFilesFromRemoteOnly(
+              context, widget.selectedFiles.files.toList());
+          _clearSelectedFiles();
+          showToast("deleted files are moved to trash");
+        },
+      ));
       actions.add(CupertinoActionSheetAction(
         child: Text("everywhere"),
         isDestructiveAction: true,

+ 14 - 4
lib/utils/delete_file_util.dart

@@ -116,19 +116,26 @@ Future<void> deleteFilesFromEverywhere(
 
 Future<void> deleteFilesFromRemoteOnly(
     BuildContext context, List<File> files) async {
+  files.removeWhere((element) => element.uploadedFileID == null);
+  if(files.isEmpty) {
+    showToast("selected files are not on ente");
+    return;
+  }
   final dialog = createProgressDialog(context, "deleting...");
   await dialog.show();
   _logger.info("Trying to delete files " +
       files.map((f) => f.uploadedFileID).toString());
   final updatedCollectionIDs = <int>{};
-  final List<int> ids = [];
+  final List<int> uploadedFileIDs = [];
+  final List<TrashRequest> trashRequests = [];
   for (final file in files) {
     updatedCollectionIDs.add(file.collectionID);
-    ids.add(file.uploadedFileID);
+    uploadedFileIDs.add(file.uploadedFileID);
+    trashRequests.add(TrashRequest(file.uploadedFileID, file.collectionID));
   }
   try {
-    await SyncService.instance.deleteFilesOnServer(ids);
-    await FilesDB.instance.deleteMultipleUploadedFiles(ids);
+    await TrashSyncService.instance.trashFilesOnServer(trashRequests);
+    await FilesDB.instance.deleteMultipleUploadedFiles(uploadedFileIDs);
   } catch (e, s) {
     _logger.severe("Failed to delete files from remote", e, s);
     await dialog.hide();
@@ -142,6 +149,9 @@ Future<void> deleteFilesFromRemoteOnly(
       type: EventType.deleted,
     ));
   }
+  Bus.instance
+        .fire(LocalPhotosUpdatedEvent(files, type: EventType.deleted));
+  SyncService.instance.sync();
   await dialog.hide();
   RemoteSyncService.instance.sync(silently: true);
 }