Selaa lähdekoodia

switch to trash diff v2

Neeraj Gupta 3 vuotta sitten
vanhempi
commit
eb26740b32
2 muutettua tiedostoa jossa 14 lisäystä ja 21 poistoa
  1. 3 10
      lib/services/trash_sync_service.dart
  2. 11 11
      lib/utils/trash_diff_fetcher.dart

+ 3 - 10
lib/services/trash_sync_service.dart

@@ -39,10 +39,9 @@ class TrashSyncService {
       _logger.fine("inserting ${diff.trashedFiles.length} items in trash");
       await _trashDB.insertMultiple(diff.trashedFiles);
     }
-    if (diff.deletedFiles.isNotEmpty) {
-      _logger.fine("discard ${diff.deletedFiles.length} deleted items");
-      await _trashDB
-          .delete(diff.deletedFiles.map((e) => e.uploadedFileID).toList());
+    if (diff.deletedFilesUploadID.isNotEmpty) {
+      _logger.fine("discard ${diff.deletedFilesUploadID.length} deleted items");
+      await _trashDB.delete(diff.deletedFilesUploadID);
     }
     if (diff.restoredFiles.isNotEmpty) {
       _logger.fine("discard ${diff.restoredFiles.length} restored items");
@@ -68,12 +67,6 @@ class TrashSyncService {
         ignoredFiles.add(file);
       }
     }
-    for (TrashFile t in diff.deletedFiles) {
-      final file = IgnoredFile.fromTrashItem(t);
-      if (file != null) {
-        ignoredFiles.add(file);
-      }
-    }
     if (ignoredFiles.isNotEmpty) {
       _logger.fine('updating ${ignoredFiles.length} ignored files ');
       await IgnoredFilesService.instance.cacheAndInsert(ignoredFiles);

+ 11 - 11
lib/utils/trash_diff_fetcher.dart

@@ -18,7 +18,7 @@ class TrashDiffFetcher {
   Future<Diff> getTrashFilesDiff(int sinceTime) async {
     try {
       final response = await _dio.get(
-        Configuration.instance.getHttpEndpoint() + "/trash/diff",
+        Configuration.instance.getHttpEndpoint() + "/trash/v2/diff",
         options: Options(
             headers: {"X-Auth-Token": Configuration.instance.getToken()}),
         queryParameters: {
@@ -27,13 +27,17 @@ class TrashDiffFetcher {
       );
       int latestUpdatedAtTime = 0;
       final trashedFiles = <TrashFile>[];
-      final deletedFiles = <TrashFile>[];
+      final deletedFilesUploadID = <int>[];
       final restoredFiles = <TrashFile>[];
       if (response != null) {
         final diff = response.data["diff"] as List;
         final bool hasMore = response.data["hasMore"] as bool;
         final startTime = DateTime.now();
         for (final item in diff) {
+          if (item["isDeleted"]) {
+            deletedFilesUploadID.add(item["file"]["id"]);
+            continue;
+          }
           final trash = TrashFile();
           trash.createdAt = item['createdAt'];
           trash.updateAt = item['updatedAt'];
@@ -77,10 +81,6 @@ class TrashDiffFetcher {
             trash.pubMagicMetadata =
                 PubMagicMetadata.fromEncodedJson(trash.pubMmdEncodedJson);
           }
-          if (item["isDeleted"]) {
-            deletedFiles.add(trash);
-            continue;
-          }
           if (item['isRestored']) {
             restoredFiles.add(trash);
             continue;
@@ -97,10 +97,10 @@ class TrashDiffFetcher {
                         startTime.microsecondsSinceEpoch))
                 .inMilliseconds
                 .toString());
-        return Diff(trashedFiles, restoredFiles, deletedFiles, hasMore,
+        return Diff(trashedFiles, restoredFiles, deletedFilesUploadID, hasMore,
             latestUpdatedAtTime);
       } else {
-        return Diff(<TrashFile>[], <TrashFile>[], <TrashFile>[], false, 0);
+        return Diff(<TrashFile>[], <TrashFile>[], <int>[], false, 0);
       }
     } catch (e, s) {
       _logger.severe(e, s);
@@ -112,10 +112,10 @@ class TrashDiffFetcher {
 class Diff {
   final List<TrashFile> trashedFiles;
   final List<TrashFile> restoredFiles;
-  final List<TrashFile> deletedFiles;
+  final List<int> deletedFilesUploadID;
   final bool hasMore;
   final int lastSyncedTimeStamp;
 
-  Diff(this.trashedFiles, this.restoredFiles, this.deletedFiles, this.hasMore,
-      this.lastSyncedTimeStamp);
+  Diff(this.trashedFiles, this.restoredFiles, this.deletedFilesUploadID,
+      this.hasMore, this.lastSyncedTimeStamp);
 }