Explorar el Código

remove blocking upload dialog for manually backed up files

Neeraj Gupta hace 3 años
padre
commit
8b9a47a64b

+ 15 - 0
lib/db/files_db.dart

@@ -578,6 +578,21 @@ class FilesDB {
     return _convertToFiles(results);
   }
 
+  // Files which user added to a collection manually but they are not uploaded yet.
+  Future<List<File>> getFilesUserUploadedManually() async {
+    final db = await instance.database;
+    final results = await db.query(
+      table,
+      where:
+          '($columnUploadedFileID IS NULL OR $columnUploadedFileID IS -1) AND '
+          '$columnCollectionID IS NOT NULL AND $columnCollectionID IS NOT -1 AND'
+          '$columnLocalID IS NOT NULL AND $columnLocalID IS NOT -1',
+      orderBy: '$columnCreationTime DESC',
+      groupBy: columnLocalID,
+    );
+    return _convertToFiles(results);
+  }
+
   Future<List<File>> getAllLocalFiles() async {
     final db = await instance.database;
     final results = await db.query(

+ 4 - 4
lib/services/collections_service.dart

@@ -434,10 +434,10 @@ class CollectionsService {
       files.removeWhere((element) =>
           element.uploadedFileID != null &&
           existingFileIDsInCollection.contains(element.uploadedFileID));
-      if (files.isEmpty) {
-        _logger.info("nothing to add to the collection");
-        return;
-      }
+    }
+    if (files.isEmpty || !containsUploadedFile) {
+      _logger.info("nothing to add to the collection");
+      return;
     }
 
     final params = <String, dynamic>{};

+ 5 - 0
lib/services/remote_sync_service.dart

@@ -212,6 +212,11 @@ class RemoteSyncService {
             " files were ignored for upload");
       }
     }
+    if (filesToBeUploaded.isEmpty) {
+      // look for files which user manually tried to back up but they are not
+      // uploaded yet. These files should ignore video backup & ignored files filter
+      filesToBeUploaded = await _db.getFilesUserUploadedManually();
+    }
     _moveVideosToEnd(filesToBeUploaded);
     _logger.info(
         filesToBeUploaded.length.toString() + " new files to be uploaded.");

+ 7 - 7
lib/ui/create_collection_page.dart

@@ -13,7 +13,6 @@ import 'package:photos/ui/collection_page.dart';
 import 'package:photos/ui/loading_widget.dart';
 import 'package:photos/ui/thumbnail_widget.dart';
 import 'package:photos/utils/dialog_util.dart';
-import 'package:photos/utils/file_uploader.dart';
 import 'package:photos/utils/share_util.dart';
 import 'package:photos/utils/toast_util.dart';
 import 'package:receive_sharing_intent/receive_sharing_intent.dart';
@@ -318,21 +317,22 @@ class _CreateCollectionPageState extends State<CreateCollectionPage> {
     await dialog.show();
     try {
       final List<File> files = [];
+      final List<File> filesPendingUpload = [];
       if (widget.sharedFiles != null) {
-        final localFiles = await convertIncomingSharedMediaToFile(
-            widget.sharedFiles, collectionID);
-        await FilesDB.instance.insertMultiple(localFiles);
+        filesPendingUpload.addAll(await convertIncomingSharedMediaToFile(
+            widget.sharedFiles, collectionID));
       } else {
+        final List<File> filesPendingUpload = [];
         for (final file in widget.selectedFiles.files) {
           final currentFile = await FilesDB.instance.getFile(file.generatedID);
           if (currentFile.uploadedFileID == null) {
-            final uploadedFile = (await FileUploader.instance
-                .forceUpload(currentFile, collectionID));
-            files.add(uploadedFile);
+            currentFile.collectionID = collectionID;
+            filesPendingUpload.add(currentFile);
           } else {
             files.add(currentFile);
           }
         }
+        await FilesDB.instance.insertMultiple(filesPendingUpload);
         await CollectionsService.instance.addToCollection(collectionID, files);
       }
       RemoteSyncService.instance.sync(silently: true);