deleteMap method

Future<DeleteResult> deleteMap(
  1. String regionName
)

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(),
    );
  }
}