fixed source update for externally modified entries
This commit is contained in:
parent
8bab3b8f0c
commit
b6367e391c
2 changed files with 11 additions and 26 deletions
|
@ -85,12 +85,13 @@ class MediaStoreSource extends CollectionSource {
|
|||
|
||||
debugPrint('$runtimeType refresh ${stopwatch.elapsed} check obsolete entries');
|
||||
final knownDateByContentId = Map.fromEntries(knownLiveEntries.map((entry) => MapEntry(entry.contentId, entry.dateModifiedSecs)));
|
||||
final obsoleteContentIds = (await mediaStoreService.checkObsoleteContentIds(knownDateByContentId.keys.toList())).toSet();
|
||||
final knownContentIds = knownDateByContentId.keys.toList();
|
||||
final removedContentIds = (await mediaStoreService.checkObsoleteContentIds(knownContentIds)).toSet();
|
||||
if (topEntries.isNotEmpty) {
|
||||
final obsoleteTopEntries = topEntries.where((entry) => obsoleteContentIds.contains(entry.contentId));
|
||||
final obsoleteTopEntries = topEntries.where((entry) => removedContentIds.contains(entry.contentId));
|
||||
await removeEntries(obsoleteTopEntries.map((entry) => entry.uri).toSet(), includeTrash: false);
|
||||
}
|
||||
knownEntries.removeWhere((entry) => obsoleteContentIds.contains(entry.contentId));
|
||||
knownEntries.removeWhere((entry) => removedContentIds.contains(entry.contentId));
|
||||
|
||||
// show known entries
|
||||
debugPrint('$runtimeType refresh ${stopwatch.elapsed} add known entries');
|
||||
|
@ -109,7 +110,7 @@ class MediaStoreSource extends CollectionSource {
|
|||
|
||||
// clean up obsolete entries
|
||||
debugPrint('$runtimeType refresh ${stopwatch.elapsed} remove obsolete entries');
|
||||
await metadataDb.removeIds(obsoleteContentIds);
|
||||
await metadataDb.removeIds(removedContentIds);
|
||||
|
||||
if (directory != null) {
|
||||
// trash
|
||||
|
@ -148,7 +149,11 @@ class MediaStoreSource extends CollectionSource {
|
|||
|
||||
mediaStoreService.getEntries(knownDateByContentId, directory: directory).listen(
|
||||
(entry) {
|
||||
entry.id = metadataDb.nextId;
|
||||
// when discovering modified entry with known content ID,
|
||||
// reuse known entry ID to overwrite it while preserving favourites, etc.
|
||||
final contentId = entry.contentId;
|
||||
entry.id = (knownContentIds.contains(contentId) ? knownLiveEntries.firstWhereOrNull((entry) => entry.contentId == contentId)?.id : null) ?? metadataDb.nextId;
|
||||
|
||||
pendingNewEntries.add(entry);
|
||||
if (pendingNewEntries.length >= refreshCount) {
|
||||
refreshCount = min(refreshCount * 10, refreshCountMax);
|
||||
|
@ -175,7 +180,7 @@ class MediaStoreSource extends CollectionSource {
|
|||
}
|
||||
await analyze(analysisController, entries: analysisEntries);
|
||||
|
||||
debugPrint('$runtimeType refresh ${stopwatch.elapsed} done for ${knownEntries.length} known, ${allNewEntries.length} new, ${obsoleteContentIds.length} obsolete');
|
||||
debugPrint('$runtimeType refresh ${stopwatch.elapsed} done for ${knownEntries.length} known, ${allNewEntries.length} new, ${removedContentIds.length} obsolete');
|
||||
},
|
||||
onError: (error) => debugPrint('$runtimeType stream error=$error'),
|
||||
);
|
||||
|
|
|
@ -3,26 +3,6 @@
|
|||
"entryActionConvert"
|
||||
],
|
||||
|
||||
"es": [
|
||||
"timeDays",
|
||||
"doNotAskAgain",
|
||||
"entryActionRestore",
|
||||
"filterBinLabel",
|
||||
"binEntriesConfirmationDialogMessage",
|
||||
"collectionActionEmptyBin",
|
||||
"binPageTitle",
|
||||
"settingsConfirmationDialogTile",
|
||||
"settingsConfirmationDialogTitle",
|
||||
"settingsConfirmationDialogDeleteItems",
|
||||
"settingsConfirmationDialogMoveToBinItems",
|
||||
"settingsEnableBin",
|
||||
"settingsEnableBinSubtitle"
|
||||
],
|
||||
|
||||
"pt": [
|
||||
"entryActionConvert"
|
||||
],
|
||||
|
||||
"ru": [
|
||||
"entryActionConvert"
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue