Explorar o código

Ignore upload if file was already uploaded

vishnukvmd %!s(int64=3) %!d(string=hai) anos
pai
achega
5eab93ee23
Modificáronse 1 ficheiros con 13 adicións e 4 borrados
  1. 13 4
      lib/utils/file_uploader.dart

+ 13 - 4
lib/utils/file_uploader.dart

@@ -246,6 +246,13 @@ class FileUploader {
     if (!canUploadUnderCurrentNetworkConditions && !forcedUpload) {
     if (!canUploadUnderCurrentNetworkConditions && !forcedUpload) {
       throw WiFiUnavailableError();
       throw WiFiUnavailableError();
     }
     }
+    final fileOnDisk = await FilesDB.instance.getFile(file.generatedID);
+    final wasAlreadyUploadedElseWhere = fileOnDisk.uploadedFileID != null &&
+        fileOnDisk.updationTime != null &&
+        fileOnDisk.collectionID == collectionID;
+    if (wasAlreadyUploadedElseWhere) {
+      return fileOnDisk;
+    }
 
 
     try {
     try {
       await _uploadLocks.acquireLock(
       await _uploadLocks.acquireLock(
@@ -285,8 +292,9 @@ class FileUploader {
         }
         }
       }
       }
       Uint8List key;
       Uint8List key;
-      var isAlreadyUploadedFile = file.uploadedFileID != null;
-      if (isAlreadyUploadedFile) {
+      bool isUpdatedFile =
+          file.uploadedFileID != null && file.updationTime == null;
+      if (isUpdatedFile) {
         key = decryptFileKey(file);
         key = decryptFileKey(file);
       } else {
       } else {
         key = null;
         key = null;
@@ -333,7 +341,7 @@ class FileUploader {
         throw SyncStopRequestedError();
         throw SyncStopRequestedError();
       }
       }
       File remoteFile;
       File remoteFile;
-      if (isAlreadyUploadedFile) {
+      if (isUpdatedFile) {
         remoteFile = await _updateFile(
         remoteFile = await _updateFile(
           file,
           file,
           fileObjectKey,
           fileObjectKey,
@@ -407,7 +415,8 @@ class FileUploader {
 
 
   Future _onInvalidFileError(File file, InvalidFileError e) async {
   Future _onInvalidFileError(File file, InvalidFileError e) async {
     String ext = file.title == null ? "no title" : extension(file.title);
     String ext = file.title == null ? "no title" : extension(file.title);
-    _logger.severe("Invalid file: (ext: $ext) encountered: " + file.toString(), e);
+    _logger.severe(
+        "Invalid file: (ext: $ext) encountered: " + file.toString(), e);
     await FilesDB.instance.deleteLocalFile(file);
     await FilesDB.instance.deleteLocalFile(file);
     await LocalSyncService.instance.trackInvalidFile(file);
     await LocalSyncService.instance.trackInvalidFile(file);
     throw e;
     throw e;