validateAll method

Future<List<FileValidationResult>> validateAll({
  1. bool pruneOrphaned = false,
  2. void onProgress(
    1. int current,
    2. int total
    )?,
})

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;
}