Browse Source

Fix bug in handling file update

Neeraj Gupta 2 years ago
parent
commit
ef5d47c584
3 changed files with 14 additions and 3 deletions
  1. 7 2
      lib/db/files_db.dart
  2. 4 1
      lib/services/remote_sync_service.dart
  3. 3 0
      lib/utils/file_uploader.dart

+ 7 - 2
lib/db/files_db.dart

@@ -770,12 +770,17 @@ class FilesDB {
     return uploadedFileIDs;
     return uploadedFileIDs;
   }
   }
 
 
-  Future<File?> getUploadedFileInAnyCollection(int uploadedFileID) async {
+  Future<File?> getUploadedLocalFileInAnyCollection(
+    int uploadedFileID,
+    int userID,
+  ) async {
     final db = await instance.database;
     final db = await instance.database;
     final results = await db.query(
     final results = await db.query(
       filesTable,
       filesTable,
-      where: '$columnUploadedFileID = ?',
+      where: '$columnLocalID IS NOT NULL AND $columnOwnerID = ? AND '
+          '$columnUploadedFileID = ?',
       whereArgs: [
       whereArgs: [
+        userID,
         uploadedFileID,
         uploadedFileID,
       ],
       ],
       limit: 1,
       limit: 1,

+ 4 - 1
lib/services/remote_sync_service.dart

@@ -519,7 +519,10 @@ class RemoteSyncService {
             .info("Skipping some updated files as we are throttling uploads");
             .info("Skipping some updated files as we are throttling uploads");
         break;
         break;
       }
       }
-      final file = await _db.getUploadedFileInAnyCollection(uploadedFileID);
+      final file = await _db.getUploadedLocalFileInAnyCollection(
+        uploadedFileID,
+        ownerID,
+      );
       if (file != null) {
       if (file != null) {
         _uploadFile(file, file.collectionID!, futures);
         _uploadFile(file, file.collectionID!, futures);
       }
       }

+ 3 - 0
lib/utils/file_uploader.dart

@@ -117,6 +117,9 @@ class FileUploader {
   // upload future will return null as File when the file entry is deleted
   // upload future will return null as File when the file entry is deleted
   // locally because it's already present in the destination collection.
   // locally because it's already present in the destination collection.
   Future<File> upload(File file, int collectionID) {
   Future<File> upload(File file, int collectionID) {
+    if (file.localID == null || file.localID!.isEmpty) {
+      return Future.error(Exception("file's localID can not be null or empty"));
+    }
     // If the file hasn't been queued yet, queue it
     // If the file hasn't been queued yet, queue it
     _totalCountInUploadSession++;
     _totalCountInUploadSession++;
     if (!_queue.containsKey(file.localID)) {
     if (!_queue.containsKey(file.localID)) {