#253 invalidate source entries when loading metadata on init

This commit is contained in:
Thibault Deckers 2022-05-19 17:19:36 +09:00
parent a6a3244b3c
commit a470bb69d7
3 changed files with 12 additions and 3 deletions

View file

@ -43,6 +43,8 @@ mixin SourceBase {
ValueNotifier<ProgressEvent> 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<AvesEntry>? 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<AvesEntry>? entries]) {
_invalidate(entries);
// it is possible for entries hidden by a filter type, to have an impact on other types

View file

@ -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();
}

View file

@ -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();
}