refresh review
This commit is contained in:
parent
9bd01b16f4
commit
0cf7eafca9
4 changed files with 34 additions and 29 deletions
|
@ -672,7 +672,6 @@ class AvesEntry {
|
||||||
required bool background,
|
required bool background,
|
||||||
required bool persist,
|
required bool persist,
|
||||||
required Set<EntryDataType> dataTypes,
|
required Set<EntryDataType> dataTypes,
|
||||||
required Locale geocoderLocale,
|
|
||||||
}) async {
|
}) async {
|
||||||
// clear derived fields
|
// clear derived fields
|
||||||
_bestDate = null;
|
_bestDate = null;
|
||||||
|
@ -687,8 +686,6 @@ class AvesEntry {
|
||||||
if (updatedEntry != null) {
|
if (updatedEntry != null) {
|
||||||
await applyNewFields(updatedEntry.toMap(), persist: persist);
|
await applyNewFields(updatedEntry.toMap(), persist: persist);
|
||||||
}
|
}
|
||||||
await catalog(background: background, force: dataTypes.contains(EntryDataType.catalog), persist: persist);
|
|
||||||
await locate(background: background, force: dataTypes.contains(EntryDataType.address), geocoderLocale: geocoderLocale);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> delete() {
|
Future<bool> delete() {
|
||||||
|
|
|
@ -392,31 +392,36 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM
|
||||||
|
|
||||||
Future<Set<String>> refreshUris(Set<String> changedUris, {AnalysisController? analysisController});
|
Future<Set<String>> refreshUris(Set<String> changedUris, {AnalysisController? analysisController});
|
||||||
|
|
||||||
Future<void> refreshEntry(AvesEntry entry, Set<EntryDataType> dataTypes) async {
|
Future<void> refreshEntries(Set<AvesEntry> entries, Set<EntryDataType> dataTypes) async {
|
||||||
await entry.refresh(background: false, persist: true, dataTypes: dataTypes, geocoderLocale: settings.appliedLocale);
|
const background = false;
|
||||||
|
const persist = true;
|
||||||
|
|
||||||
final id = entry.id;
|
await Future.forEach(entries, (entry) async {
|
||||||
await Future.forEach(EntryDataType.values, (dataType) async {
|
await entry.refresh(background: background, persist: persist, dataTypes: dataTypes);
|
||||||
switch (dataType) {
|
|
||||||
case EntryDataType.aspectRatio:
|
|
||||||
onAspectRatioChanged();
|
|
||||||
break;
|
|
||||||
case EntryDataType.catalog:
|
|
||||||
await metadataDb.updateCatalogMetadata(id, entry.catalogMetadata);
|
|
||||||
onCatalogMetadataChanged();
|
|
||||||
break;
|
|
||||||
case EntryDataType.address:
|
|
||||||
await metadataDb.updateAddress(id, entry.addressDetails);
|
|
||||||
onAddressMetadataChanged();
|
|
||||||
break;
|
|
||||||
case EntryDataType.basic:
|
|
||||||
case EntryDataType.references:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
updateDerivedFilters({entry});
|
if (dataTypes.contains(EntryDataType.aspectRatio)) {
|
||||||
eventBus.fire(EntryRefreshedEvent({entry}));
|
onAspectRatioChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dataTypes.contains(EntryDataType.catalog)) {
|
||||||
|
await Future.forEach(entries, (entry) async {
|
||||||
|
await entry.catalog(background: background, force: dataTypes.contains(EntryDataType.catalog), persist: persist);
|
||||||
|
await metadataDb.updateCatalogMetadata(entry.id, entry.catalogMetadata);
|
||||||
|
});
|
||||||
|
onCatalogMetadataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dataTypes.contains(EntryDataType.address)) {
|
||||||
|
await Future.forEach(entries, (entry) async {
|
||||||
|
await entry.locate(background: background, force: dataTypes.contains(EntryDataType.address), geocoderLocale: settings.appliedLocale);
|
||||||
|
await metadataDb.updateAddress(entry.id, entry.addressDetails);
|
||||||
|
});
|
||||||
|
onAddressMetadataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
updateDerivedFilters(entries);
|
||||||
|
eventBus.fire(EntryRefreshedEvent(entries));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> analyze(AnalysisController? analysisController, {Set<AvesEntry>? entries}) async {
|
Future<void> analyze(AnalysisController? analysisController, {Set<AvesEntry>? entries}) async {
|
||||||
|
|
|
@ -271,8 +271,7 @@ class MediaStoreSource extends CollectionSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entriesToRefresh.isNotEmpty) {
|
if (entriesToRefresh.isNotEmpty) {
|
||||||
final allDataTypes = EntryDataType.values.toSet();
|
await refreshEntries(entriesToRefresh, EntryDataType.values.toSet());
|
||||||
await Future.forEach(entriesToRefresh, (entry) => refreshEntry(entry, allDataTypes));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return tempUris;
|
return tempUris;
|
||||||
|
|
|
@ -33,7 +33,7 @@ mixin SingleEntryEditorMixin on FeedbackMixin, PermissionAwareMixin {
|
||||||
Set<String> obsoleteTags = targetEntry.tags;
|
Set<String> obsoleteTags = targetEntry.tags;
|
||||||
String? obsoleteCountryCode = targetEntry.addressDetails?.countryCode;
|
String? obsoleteCountryCode = targetEntry.addressDetails?.countryCode;
|
||||||
|
|
||||||
await source.refreshEntry(targetEntry, dataTypes);
|
await source.refreshEntries({targetEntry}, dataTypes);
|
||||||
|
|
||||||
// invalidate filters derived from values before edition
|
// invalidate filters derived from values before edition
|
||||||
// this invalidation must happen after the source is refreshed,
|
// this invalidation must happen after the source is refreshed,
|
||||||
|
@ -45,7 +45,11 @@ mixin SingleEntryEditorMixin on FeedbackMixin, PermissionAwareMixin {
|
||||||
source.invalidateTagFilterSummary(tags: obsoleteTags);
|
source.invalidateTagFilterSummary(tags: obsoleteTags);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await targetEntry.refresh(background: false, persist: false, dataTypes: dataTypes, geocoderLocale: settings.appliedLocale);
|
const background = false;
|
||||||
|
const persist = false;
|
||||||
|
await targetEntry.refresh(background: background, persist: persist, dataTypes: dataTypes);
|
||||||
|
await targetEntry.catalog(background: background, force: dataTypes.contains(EntryDataType.catalog), persist: persist);
|
||||||
|
await targetEntry.locate(background: background, force: dataTypes.contains(EntryDataType.address), geocoderLocale: settings.appliedLocale);
|
||||||
}
|
}
|
||||||
showFeedback(context, l10n.genericSuccessFeedback);
|
showFeedback(context, l10n.genericSuccessFeedback);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue