فهرست منبع

Add API to delete local files

Vishnu 4 سال پیش
والد
کامیت
41ca328009
2فایلهای تغییر یافته به همراه44 افزوده شده و 0 حذف شده
  1. 28 0
      lib/db/files_db.dart
  2. 16 0
      lib/utils/delete_file_util.dart

+ 28 - 0
lib/db/files_db.dart

@@ -561,6 +561,34 @@ class FilesDB {
     );
     );
   }
   }
 
 
+  Future<void> deleteLocalFiles(List<String> localIDs) async {
+    String inParam = "";
+    for (final localID in localIDs) {
+      inParam += "'" + localID + "',";
+    }
+    inParam = inParam.substring(0, inParam.length - 1);
+    final db = await instance.database;
+    await db.rawQuery('''
+      UPDATE $table
+      SET $columnLocalID = NULL
+      WHERE $columnLocalID IN ($inParam);
+    ''');
+  }
+
+  Future<List<File>> getLocalFiles(List<String> localIDs) async {
+    String inParam = "";
+    for (final localID in localIDs) {
+      inParam += "'" + localID + "',";
+    }
+    inParam = inParam.substring(0, inParam.length - 1);
+    final db = await instance.database;
+    final results = await db.query(
+      table,
+      where: '$columnLocalID IN ($inParam)',
+    );
+    return _convertToFiles(results);
+  }
+
   Future<int> deleteFromCollection(int uploadedFileID, int collectionID) async {
   Future<int> deleteFromCollection(int uploadedFileID, int collectionID) async {
     final db = await instance.database;
     final db = await instance.database;
     return db.delete(
     return db.delete(

+ 16 - 0
lib/utils/delete_file_util.dart

@@ -135,3 +135,19 @@ Future<void> deleteFilesOnDeviceOnly(
   }
   }
   await dialog.hide();
   await dialog.hide();
 }
 }
+
+Future<void> deleteLocalFiles(List<String> localIDs) async {
+  List<String> deletedIDs = [];
+  try {
+    deletedIDs = await PhotoManager.editor.deleteWithIds(localIDs);
+  } catch (e, s) {
+    _logger.severe("Could not delete files", e, s);
+  }
+  if (deletedIDs.isNotEmpty) {
+    final deletedFiles = await FilesDB.instance.getLocalFiles(deletedIDs);
+    await FilesDB.instance.deleteLocalFiles(deletedIDs);
+    _logger.info(deletedFiles.length.toString() + " files deleted locally");
+    Bus.instance
+        .fire(LocalPhotosUpdatedEvent(deletedFiles, type: EventType.deleted));
+  }
+}