From a470bb69d727258d8a13375b3b60bfb1e74ec4fd Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Thu, 19 May 2022 17:19:36 +0900 Subject: [PATCH] #253 invalidate source entries when loading metadata on init --- lib/model/source/collection_source.dart | 13 ++++++++++--- lib/model/source/location.dart | 1 + lib/model/source/tag.dart | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/model/source/collection_source.dart b/lib/model/source/collection_source.dart index cd8d69453..f39c31d7a 100644 --- a/lib/model/source/collection_source.dart +++ b/lib/model/source/collection_source.dart @@ -43,6 +43,8 @@ mixin SourceBase { ValueNotifier progressNotifier = ValueNotifier(const ProgressEvent(done: 0, total: 0)); void setProgress({required int done, required int total}) => progressNotifier.value = ProgressEvent(done: done, total: total); + + void invalidateEntries(); } abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagMixin, TrashMixin { @@ -113,14 +115,19 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM } void _invalidate([Set? entries]) { - _visibleEntries = null; - _trashedEntries = null; - _sortedEntriesByDate = null; + invalidateEntries(); invalidateAlbumFilterSummary(entries: entries); invalidateCountryFilterSummary(entries: entries); invalidateTagFilterSummary(entries: entries); } + @override + void invalidateEntries() { + _visibleEntries = null; + _trashedEntries = null; + _sortedEntriesByDate = null; + } + void updateDerivedFilters([Set? entries]) { _invalidate(entries); // it is possible for entries hidden by a filter type, to have an impact on other types diff --git a/lib/model/source/location.dart b/lib/model/source/location.dart index 8eb3f8fc7..3f9135b4a 100644 --- a/lib/model/source/location.dart +++ b/lib/model/source/location.dart @@ -24,6 +24,7 @@ mixin LocationMixin on SourceBase { final saved = await (ids != null ? metadataDb.loadAddressesById(ids) : metadataDb.loadAddresses()); final idMap = entryById; saved.forEach((metadata) => idMap[metadata.id]?.addressDetails = metadata); + invalidateEntries(); onAddressMetadataChanged(); } diff --git a/lib/model/source/tag.dart b/lib/model/source/tag.dart index b2fa61907..24e03fd81 100644 --- a/lib/model/source/tag.dart +++ b/lib/model/source/tag.dart @@ -18,6 +18,7 @@ mixin TagMixin on SourceBase { final saved = await (ids != null ? metadataDb.loadCatalogMetadataById(ids) : metadataDb.loadCatalogMetadata()); final idMap = entryById; saved.forEach((metadata) => idMap[metadata.id]?.catalogMetadata = metadata); + invalidateEntries(); onCatalogMetadataChanged(); }