瀏覽代碼

TrashSync: handle API contract changes

Neeraj Gupta 3 年之前
父節點
當前提交
294b0219f1
共有 2 個文件被更改,包括 8 次插入9 次删除
  1. 2 3
      lib/services/trash_sync_service.dart
  2. 6 6
      lib/utils/trash_diff_fetcher.dart

+ 2 - 3
lib/services/trash_sync_service.dart

@@ -15,7 +15,6 @@ class TrashSyncService {
   final _logger = Logger("TrashSyncService");
   final _logger = Logger("TrashSyncService");
   final _diffFetcher = TrashDiffFetcher();
   final _diffFetcher = TrashDiffFetcher();
   final _trashDB = TrashDB.instance;
   final _trashDB = TrashDB.instance;
-  static const kDiffLimit = 2500;
   static const kLastTrashSyncTime = "last_trash_sync_time";
   static const kLastTrashSyncTime = "last_trash_sync_time";
   SharedPreferences _prefs;
   SharedPreferences _prefs;
 
 
@@ -32,7 +31,7 @@ class TrashSyncService {
   Future<void> syncTrash() async {
   Future<void> syncTrash() async {
     final lastSyncTime = _getSyncTime();
     final lastSyncTime = _getSyncTime();
     _logger.fine('sync trash sinceTime : $lastSyncTime');
     _logger.fine('sync trash sinceTime : $lastSyncTime');
-    final diff = await _diffFetcher.getTrashFilesDiff(lastSyncTime, kDiffLimit);
+    final diff = await _diffFetcher.getTrashFilesDiff(lastSyncTime);
     if (diff.trashedFiles.isNotEmpty) {
     if (diff.trashedFiles.isNotEmpty) {
       _logger.fine("inserting ${diff.trashedFiles.length} items in trash");
       _logger.fine("inserting ${diff.trashedFiles.length} items in trash");
       await _trashDB.insertMultiple(diff.trashedFiles);
       await _trashDB.insertMultiple(diff.trashedFiles);
@@ -53,7 +52,7 @@ class TrashSyncService {
     if (diff.lastSyncedTimeStamp != 0) {
     if (diff.lastSyncedTimeStamp != 0) {
       await _setSyncTime(diff.lastSyncedTimeStamp);
       await _setSyncTime(diff.lastSyncedTimeStamp);
     }
     }
-    if (diff.fetchCount == kDiffLimit) {
+    if (diff.hasMore) {
       return await syncTrash();
       return await syncTrash();
     }
     }
   }
   }

+ 6 - 6
lib/utils/trash_diff_fetcher.dart

@@ -16,7 +16,7 @@ class TrashDiffFetcher {
   final _logger = Logger("TrashDiffFetcher");
   final _logger = Logger("TrashDiffFetcher");
   final _dio = Network.instance.getDio();
   final _dio = Network.instance.getDio();
 
 
-  Future<Diff> getTrashFilesDiff(int sinceTime, int limit) async {
+  Future<Diff> getTrashFilesDiff(int sinceTime) async {
     try {
     try {
       final response = await _dio.get(
       final response = await _dio.get(
         Configuration.instance.getHttpEndpoint() + "/trash/diff",
         Configuration.instance.getHttpEndpoint() + "/trash/diff",
@@ -24,7 +24,6 @@ class TrashDiffFetcher {
             headers: {"X-Auth-Token": Configuration.instance.getToken()}),
             headers: {"X-Auth-Token": Configuration.instance.getToken()}),
         queryParameters: {
         queryParameters: {
           "sinceTime": sinceTime,
           "sinceTime": sinceTime,
-          "limit": limit,
         },
         },
       );
       );
       int latestUpdatedAtTime = 0;
       int latestUpdatedAtTime = 0;
@@ -34,6 +33,7 @@ class TrashDiffFetcher {
       if (response != null) {
       if (response != null) {
         Bus.instance.fire(RemoteSyncEvent(true));
         Bus.instance.fire(RemoteSyncEvent(true));
         final diff = response.data["diff"] as List;
         final diff = response.data["diff"] as List;
+        final bool hasMore = response.data["hasMore"] as bool;
         final startTime = DateTime.now();
         final startTime = DateTime.now();
         for (final item in diff) {
         for (final item in diff) {
           final trash = TrashFile();
           final trash = TrashFile();
@@ -89,11 +89,11 @@ class TrashDiffFetcher {
                         startTime.microsecondsSinceEpoch))
                         startTime.microsecondsSinceEpoch))
                 .inMilliseconds
                 .inMilliseconds
                 .toString());
                 .toString());
-        return Diff(trashedFiles, restoredFiles, deletedFiles, diff.length,
+        return Diff(trashedFiles, restoredFiles, deletedFiles, hasMore,
             latestUpdatedAtTime);
             latestUpdatedAtTime);
       } else {
       } else {
         Bus.instance.fire(RemoteSyncEvent(false));
         Bus.instance.fire(RemoteSyncEvent(false));
-        return Diff(<TrashFile>[], <TrashFile>[], <TrashFile>[], 0, 0);
+        return Diff(<TrashFile>[], <TrashFile>[], <TrashFile>[], false, 0);
       }
       }
     } catch (e, s) {
     } catch (e, s) {
       _logger.severe(e, s);
       _logger.severe(e, s);
@@ -106,9 +106,9 @@ class Diff {
   final List<TrashFile> trashedFiles;
   final List<TrashFile> trashedFiles;
   final List<TrashFile> restoredFiles;
   final List<TrashFile> restoredFiles;
   final List<TrashFile> deletedFiles;
   final List<TrashFile> deletedFiles;
-  final int fetchCount;
+  final bool hasMore;
   final int lastSyncedTimeStamp;
   final int lastSyncedTimeStamp;
 
 
   Diff(this.trashedFiles, this.restoredFiles, this.deletedFiles,
   Diff(this.trashedFiles, this.restoredFiles, this.deletedFiles,
-      this.fetchCount, this.lastSyncedTimeStamp);
+      this.hasMore, this.lastSyncedTimeStamp);
 }
 }