Browse Source

Remove files that have been deleted on remote

Vishnu Mohandas 4 years ago
parent
commit
c44e89641b
2 changed files with 16 additions and 1 deletions
  1. 9 0
      lib/db/files_db.dart
  2. 7 1
      lib/utils/file_downloader.dart

+ 9 - 0
lib/db/files_db.dart

@@ -295,6 +295,15 @@ class FilesDB {
     );
   }
 
+  Future<int> deleteFromCollection(int uploadedFileID, int collectionID) async {
+    final db = await instance.database;
+    return db.delete(
+      table,
+      where: '$columnUploadedFileID = ? AND $columnCollectionID = ?',
+      whereArgs: [uploadedFileID, collectionID],
+    );
+  }
+
   Future<int> deleteFilesInRemoteFolder(int folderID) async {
     final db = await instance.database;
     return db.delete(

+ 7 - 1
lib/utils/file_downloader.dart

@@ -5,6 +5,7 @@ import 'package:flutter_sodium/flutter_sodium.dart';
 import 'package:logging/logging.dart';
 import 'package:photos/core/configuration.dart';
 import 'package:photos/core/event_bus.dart';
+import 'package:photos/db/files_db.dart';
 import 'package:photos/events/remote_sync_event.dart';
 import 'package:photos/models/file.dart';
 import 'package:photos/utils/crypto_util.dart';
@@ -34,8 +35,13 @@ class DiffFetcher {
             for (final item in diff) {
               final file = File();
               file.uploadedFileID = item["id"];
-              file.ownerID = item["ownerID"];
               file.collectionID = item["collectionID"];
+              if (item["isDeleted"]) {
+                await FilesDB.instance.deleteFromCollection(
+                    file.uploadedFileID, file.collectionID);
+                continue;
+              }
+              file.ownerID = item["ownerID"];
               file.updationTime = item["updationTime"];
               file.isEncrypted = true;
               file.encryptedKey = item["encryptedKey"];