Jelajahi Sumber

Merge pull request #644 from ente-io/leave_delete_state_refresh

Vishnu Mohandas 2 tahun lalu
induk
melakukan
20f8af450f
1 mengubah file dengan 20 tambahan dan 8 penghapusan
  1. 20 8
      lib/services/collections_service.dart

+ 20 - 8
lib/services/collections_service.dart

@@ -318,17 +318,30 @@ class CollectionsService {
       await _enteDio.delete(
         "/collections/v2/${collection.id}",
       );
-      await _filesDB.deleteCollection(collection.id);
-      final deletedCollection = collection.copyWith(isDeleted: true);
-      _collectionIDToCollections[collection.id] = deletedCollection;
-      unawaited(_db.insert([deletedCollection]));
-      unawaited(LocalSyncService.instance.syncAll());
+      await _handleCollectionDeletion(collection);
     } catch (e) {
       _logger.severe('failed to trash collection', e);
       rethrow;
     }
   }
 
+  Future<void> _handleCollectionDeletion(Collection collection) async {
+    await _filesDB.deleteCollection(collection.id);
+    final deletedCollection = collection.copyWith(isDeleted: true);
+    _collectionIDToCollections[collection.id] = deletedCollection;
+    Bus.instance.fire(
+      CollectionUpdatedEvent(
+        collection.id,
+        <File>[],
+        "delete_collection",
+        type: EventType.deletedFromRemote,
+      ),
+    );
+    sync().ignore();
+    unawaited(_db.insert([deletedCollection]));
+    unawaited(LocalSyncService.instance.syncAll());
+  }
+
   Uint8List getCollectionKey(int collectionID) {
     if (!_cachedKeys.containsKey(collectionID)) {
       final collection = _collectionIDToCollections[collectionID];
@@ -400,8 +413,7 @@ class CollectionsService {
       await _enteDio.post(
         "/collections/leave/${collection.id}",
       );
-      // trigger sync to fetch the latest name from server
-      sync().ignore();
+      await _handleCollectionDeletion(collection);
     } catch (e, s) {
       _logger.severe("failed to leave collection", e, s);
       rethrow;
@@ -998,7 +1010,7 @@ class CollectionsService {
   }
 
   Future _updateDB(List<Collection> collections, {int attempt = 1}) async {
-    if(collections.isEmpty) {
+    if (collections.isEmpty) {
       return;
     }
     try {