瀏覽代碼

Remove files that have been deleted from the upload queue

vishnukvmd 3 年之前
父節點
當前提交
1a75f9e9f8
共有 3 個文件被更改,包括 20 次插入2 次删除
  1. 3 1
      lib/ui/thumbnail_widget.dart
  2. 3 1
      lib/ui/zoomable_image.dart
  3. 14 0
      lib/utils/file_uploader.dart

+ 3 - 1
lib/ui/thumbnail_widget.dart

@@ -7,6 +7,7 @@ import 'package:photos/core/errors.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/db/trash_db.dart';
+import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/local_photos_updated_event.dart';
 import 'package:photos/models/file.dart';
 import 'package:photos/models/file_type.dart';
@@ -228,7 +229,8 @@ class _ThumbnailWidgetState extends State<ThumbnailWidget> {
           if (await doesLocalFileExist(widget.file) == false) {
             _logger.info("Deleting file " + widget.file.tag());
             FilesDB.instance.deleteLocalFile(widget.file);
-            Bus.instance.fire(LocalPhotosUpdatedEvent([widget.file]));
+            Bus.instance.fire(LocalPhotosUpdatedEvent([widget.file],
+                type: EventType.deletedFromDevice));
           }
         }
         return;

+ 3 - 1
lib/ui/zoomable_image.dart

@@ -7,6 +7,7 @@ import 'package:photos/core/cache/thumbnail_cache.dart';
 import 'package:photos/core/constants.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/db/files_db.dart';
+import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/local_photos_updated_event.dart';
 import 'package:photos/models/file.dart';
 import 'package:photos/ui/loading_widget.dart';
@@ -150,7 +151,8 @@ class _ZoomableImageState extends State<ZoomableImage>
             _loadNetworkImage();
           } else {
             FilesDB.instance.deleteLocalFile(_photo);
-            Bus.instance.fire(LocalPhotosUpdatedEvent([_photo]));
+            Bus.instance.fire(LocalPhotosUpdatedEvent([_photo],
+                type: EventType.deletedFromDevice));
           }
         }
       });

+ 14 - 0
lib/utils/file_uploader.dart

@@ -16,6 +16,7 @@ import 'package:photos/core/event_bus.dart';
 import 'package:photos/core/network.dart';
 import 'package:photos/db/files_db.dart';
 import 'package:photos/db/upload_locks_db.dart';
+import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/local_photos_updated_event.dart';
 import 'package:photos/events/subscription_purchased_event.dart';
 import 'package:photos/main.dart';
@@ -81,6 +82,19 @@ class FileUploader {
       }
       _pollBackgroundUploadStatus();
     }
+    Bus.instance.on<LocalPhotosUpdatedEvent>().listen((event) {
+      if (event.type == EventType.deletedFromDevice ||
+          event.type == EventType.deletedFromEverywhere) {
+        removeFromQueueWhere((file) {
+          for (final updatedFile in event.updatedFiles) {
+            if (file.generatedID == updatedFile.generatedID) {
+              return true;
+            }
+          }
+          return false;
+        }, InvalidFileError("File already deleted"));
+      }
+    });
   }
 
   Future<File> upload(File file, int collectionID) {