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');
|
debugPrint('$runtimeType refresh ${stopwatch.elapsed} check obsolete entries');
|
||||||
final knownDateByContentId = Map.fromEntries(knownLiveEntries.map((entry) => MapEntry(entry.contentId, entry.dateModifiedSecs)));
|
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) {
|
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);
|
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
|
// show known entries
|
||||||
debugPrint('$runtimeType refresh ${stopwatch.elapsed} add known entries');
|
debugPrint('$runtimeType refresh ${stopwatch.elapsed} add known entries');
|
||||||
|
@ -109,7 +110,7 @@ class MediaStoreSource extends CollectionSource {
|
||||||
|
|
||||||
// clean up obsolete entries
|
// clean up obsolete entries
|
||||||
debugPrint('$runtimeType refresh ${stopwatch.elapsed} remove obsolete entries');
|
debugPrint('$runtimeType refresh ${stopwatch.elapsed} remove obsolete entries');
|
||||||
await metadataDb.removeIds(obsoleteContentIds);
|
await metadataDb.removeIds(removedContentIds);
|
||||||
|
|
||||||
if (directory != null) {
|
if (directory != null) {
|
||||||
// trash
|
// trash
|
||||||
|
@ -148,7 +149,11 @@ class MediaStoreSource extends CollectionSource {
|
||||||
|
|
||||||
mediaStoreService.getEntries(knownDateByContentId, directory: directory).listen(
|
mediaStoreService.getEntries(knownDateByContentId, directory: directory).listen(
|
||||||
(entry) {
|
(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);
|
pendingNewEntries.add(entry);
|
||||||
if (pendingNewEntries.length >= refreshCount) {
|
if (pendingNewEntries.length >= refreshCount) {
|
||||||
refreshCount = min(refreshCount * 10, refreshCountMax);
|
refreshCount = min(refreshCount * 10, refreshCountMax);
|
||||||
|
@ -175,7 +180,7 @@ class MediaStoreSource extends CollectionSource {
|
||||||
}
|
}
|
||||||
await analyze(analysisController, entries: analysisEntries);
|
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'),
|
onError: (error) => debugPrint('$runtimeType stream error=$error'),
|
||||||
);
|
);
|
||||||
|
|
|
@ -3,26 +3,6 @@
|
||||||
"entryActionConvert"
|
"entryActionConvert"
|
||||||
],
|
],
|
||||||
|
|
||||||
"es": [
|
|
||||||
"timeDays",
|
|
||||||
"doNotAskAgain",
|
|
||||||
"entryActionRestore",
|
|
||||||
"filterBinLabel",
|
|
||||||
"binEntriesConfirmationDialogMessage",
|
|
||||||
"collectionActionEmptyBin",
|
|
||||||
"binPageTitle",
|
|
||||||
"settingsConfirmationDialogTile",
|
|
||||||
"settingsConfirmationDialogTitle",
|
|
||||||
"settingsConfirmationDialogDeleteItems",
|
|
||||||
"settingsConfirmationDialogMoveToBinItems",
|
|
||||||
"settingsEnableBin",
|
|
||||||
"settingsEnableBinSubtitle"
|
|
||||||
],
|
|
||||||
|
|
||||||
"pt": [
|
|
||||||
"entryActionConvert"
|
|
||||||
],
|
|
||||||
|
|
||||||
"ru": [
|
"ru": [
|
||||||
"entryActionConvert"
|
"entryActionConvert"
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in a new issue