Browse Source

Force refresh collection gallery on collectionSort change

Neeraj Gupta 2 years ago
parent
commit
e12ed7000d
2 changed files with 12 additions and 0 deletions
  1. 8 0
      lib/ui/viewer/gallery/collection_page.dart
  2. 4 0
      lib/utils/magic_util.dart

+ 8 - 0
lib/ui/viewer/gallery/collection_page.dart

@@ -2,6 +2,7 @@ import 'package:flutter/material.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/collection_meta_event.dart";
 import 'package:photos/events/collection_updated_event.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/models/collection.dart';
@@ -65,6 +66,13 @@ class CollectionPage extends StatelessWidget {
       reloadEvent: Bus.instance
           .on<CollectionUpdatedEvent>()
           .where((event) => event.collectionID == c.collection.id),
+      forceReloadEvents: [
+        Bus.instance.on<CollectionMetaEvent>().where(
+              (event) =>
+                  event.id == c.collection.id &&
+                  event.type == CollectionMetaEventType.sortChanged,
+            )
+      ],
       removalEventTypes: const {
         EventType.deletedFromRemote,
         EventType.deletedFromEverywhere,

+ 4 - 0
lib/utils/magic_util.dart

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
 import 'package:logging/logging.dart';
 import 'package:path/path.dart';
 import 'package:photos/core/event_bus.dart';
+import "package:photos/events/collection_meta_event.dart";
 import 'package:photos/events/force_reload_home_gallery_event.dart';
 import "package:photos/generated/l10n.dart";
 import 'package:photos/models/collection.dart';
@@ -86,6 +87,9 @@ Future<void> changeSortOrder(
     final Map<String, dynamic> update = {"asc": sortedInAscOrder};
     await CollectionsService.instance
         .updatePublicMagicMetadata(collection, update);
+    Bus.instance.fire(
+      CollectionMetaEvent(collection.id, CollectionMetaEventType.sortChanged),
+    );
   } catch (e, s) {
     _logger.severe("failed to update collection visibility", e, s);
     showShortToast(context, S.of(context).somethingWentWrong);