deleteMap method
Delete a downloaded map file and remove its metadata.
This deletes both the MWM file on disk and the stored metadata. Does NOT delete bundled files (isBundled=true).
Returns DeleteResult with success status and any error message.
Implementation
Future<DeleteResult> deleteMap(String regionName) async {
final metadata = getByRegion(regionName);
if (metadata == null) {
return DeleteResult(
regionName: regionName,
success: false,
error: 'No metadata found for region: $regionName',
);
}
if (metadata.isBundled) {
return DeleteResult(
regionName: regionName,
success: false,
error: 'Cannot delete bundled maps. Re-install the app to remove.',
);
}
try {
final file = File(metadata.filePath);
// Delete the file if it exists
if (await file.exists()) {
await file.delete();
debugPrint('[MwmStorage] Deleted file: ${metadata.filePath}');
}
// Remove metadata
await remove(regionName);
debugPrint('[MwmStorage] Removed metadata for: $regionName');
return DeleteResult(
regionName: regionName,
success: true,
deletedBytes: metadata.fileSize,
);
} catch (e) {
debugPrint('[MwmStorage] Error deleting $regionName: $e');
return DeleteResult(
regionName: regionName,
success: false,
error: e.toString(),
);
}
}