From 9041a2cf2825814195a117cbdd6529f315ecb041 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sat, 24 Jan 2026 21:12:19 +0300 Subject: [PATCH] stuff --- mnemo_cards_backend/lib/api/v2/packs_api_v2.dart | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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