From 980d60fc29773da4bde841fe66f9d4a37312ccac Mon Sep 17 00:00:00 2001 From: ashilkn Date: Tue, 15 Aug 2023 12:57:13 +0530 Subject: [PATCH] Fix stale state issue on the hidden collections list after unhiding a collection --- lib/ui/collections/album/horizontal_list.dart | 2 +- lib/ui/viewer/gallery/hidden_page.dart | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/ui/collections/album/horizontal_list.dart b/lib/ui/collections/album/horizontal_list.dart index 3319d38c5..759d22619 100644 --- a/lib/ui/collections/album/horizontal_list.dart +++ b/lib/ui/collections/album/horizontal_list.dart @@ -31,12 +31,12 @@ class _AlbumHorizontalListState extends State { @override void initState() { + super.initState(); _collectionUpdatesSubscription = Bus.instance.on().listen((event) { setState(() {}); }); _logger = Logger((_AlbumHorizontalListState).toString()); - super.initState(); } @override diff --git a/lib/ui/viewer/gallery/hidden_page.dart b/lib/ui/viewer/gallery/hidden_page.dart index 28ff190f2..e92518123 100644 --- a/lib/ui/viewer/gallery/hidden_page.dart +++ b/lib/ui/viewer/gallery/hidden_page.dart @@ -1,8 +1,11 @@ +import "dart:async"; + import 'package:collection/collection.dart' show IterableExtension; 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_updated_event.dart"; import 'package:photos/events/files_updated_event.dart'; import "package:photos/generated/l10n.dart"; import "package:photos/models/collection.dart"; @@ -36,16 +39,29 @@ class HiddenPage extends StatefulWidget { class _HiddenPageState extends State { int? _defaultHiddenCollectionId; final _hiddenCollectionsExcludingDefault = []; + late StreamSubscription + _collectionUpdatesSubscription; @override void initState() { super.initState(); + _collectionUpdatesSubscription = + Bus.instance.on().listen((event) { + setState(() { + getHiddenCollections(); + }); + }); + getHiddenCollections(); + } + + getHiddenCollections() { final hiddenCollections = CollectionsService.instance.getHiddenCollections(); CollectionsService.instance .getDefaultHiddenCollection() .then((defaultHiddenCollection) { setState(() { + _hiddenCollectionsExcludingDefault.clear(); _defaultHiddenCollectionId = defaultHiddenCollection.id; for (Collection hiddenColleciton in hiddenCollections) { if (hiddenColleciton.id != defaultHiddenCollection.id) { @@ -56,6 +72,12 @@ class _HiddenPageState extends State { }); } + @override + void dispose() { + _collectionUpdatesSubscription.cancel(); + super.dispose(); + } + final _selectedFiles = SelectedFiles(); @override