validateAll method
Validate all stored metadata against actual files on disk.
Runs validation checks in parallel using Isolate.run for large collections to avoid blocking the UI thread.
Returns a list of FileValidationResult for each stored region.
Use pruneOrphaned parameter to automatically remove metadata
for files that no longer exist.
Implementation
Future<List<FileValidationResult>> validateAll({
bool pruneOrphaned = false,
void Function(int current, int total)? onProgress,
}) async {
final regions = List<MwmMetadata>.from(_cache);
final results = <FileValidationResult>[];
final orphanedRegions = <String>[];
for (var i = 0; i < regions.length; i++) {
final metadata = regions[i];
final result = await validateFile(metadata.regionName);
results.add(result);
if (!result.exists && result.hasMetadata) {
orphanedRegions.add(metadata.regionName);
}
onProgress?.call(i + 1, regions.length);
}
// Prune orphaned metadata if requested
if (pruneOrphaned && orphanedRegions.isNotEmpty) {
for (final region in orphanedRegions) {
await remove(region);
debugPrint('[MwmStorage] Pruned orphaned metadata for: $region');
}
}
return results;
}