Browse Source

Fix state refresh issue on leave album

Neeraj Gupta 2 years ago
parent
commit
734afbfbb1
1 changed files with 19 additions and 16 deletions
  1. 19 16
      lib/services/collections_service.dart

+ 19 - 16
lib/services/collections_service.dart

@@ -318,26 +318,30 @@ class CollectionsService {
       await _enteDio.delete(
       await _enteDio.delete(
         "/collections/v2/${collection.id}",
         "/collections/v2/${collection.id}",
       );
       );
-      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());
+      await _handleCollectionDeletion(collection);
     } catch (e) {
     } catch (e) {
       _logger.severe('failed to trash collection', e);
       _logger.severe('failed to trash collection', e);
       rethrow;
       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) {
   Uint8List getCollectionKey(int collectionID) {
     if (!_cachedKeys.containsKey(collectionID)) {
     if (!_cachedKeys.containsKey(collectionID)) {
       final collection = _collectionIDToCollections[collectionID];
       final collection = _collectionIDToCollections[collectionID];
@@ -409,8 +413,7 @@ class CollectionsService {
       await _enteDio.post(
       await _enteDio.post(
         "/collections/leave/${collection.id}",
         "/collections/leave/${collection.id}",
       );
       );
-      // trigger sync to fetch the latest name from server
-      sync().ignore();
+      await _handleCollectionDeletion(collection);
     } catch (e, s) {
     } catch (e, s) {
       _logger.severe("failed to leave collection", e, s);
       _logger.severe("failed to leave collection", e, s);
       rethrow;
       rethrow;