diff --git a/mnemo_cards_backend/lib/api/v2/packs_api_v2.dart b/mnemo_cards_backend/lib/api/v2/packs_api_v2.dart index 6d6b381..7e4032f 100644 --- a/mnemo_cards_backend/lib/api/v2/packs_api_v2.dart +++ b/mnemo_cards_backend/lib/api/v2/packs_api_v2.dart @@ -132,13 +132,16 @@ class PacksApiV2 { } /// Validates if a string is a valid UUID (object ID in MinIO) + /// Supports UUID with optional file extension (e.g., .mp3, .wav) bool _isValidUuid(String? value) { if (value == null || value.isEmpty) return false; - final uuidRegex = RegExp( - r'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$', + final trimmed = value.trim(); + // UUID with optional extension: UUID followed by optional .extension + final uuidWithExtensionRegex = RegExp( + r'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(\.[a-z0-9]+)?$', caseSensitive: false, ); - return uuidRegex.hasMatch(value.trim()); + return uuidWithExtensionRegex.hasMatch(trimmed); } /// Generates presigned URL if value is a UUID (object ID), otherwise returns null