From 877b403914efcdbcf59bbe86d357b0ccbe83dd41 Mon Sep 17 00:00:00 2001 From: cogwheel0 <172976095+cogwheel0@users.noreply.github.com> Date: Sat, 1 Nov 2025 15:29:54 +0530 Subject: [PATCH] refactor(api): Improve data parsing with normalized list handling --- lib/core/services/api_service.dart | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/core/services/api_service.dart b/lib/core/services/api_service.dart index fd5d2f0..9b00270 100644 --- a/lib/core/services/api_service.dart +++ b/lib/core/services/api_service.dart @@ -1599,10 +1599,10 @@ class ApiService { if (data is Map) { final voices = data['voices']; if (voices is List) { - return voices - .whereType() - .map((e) => e.cast()) - .toList(); + return _normalizeList( + voices, + debugLabel: 'parse_voice_list', + ); } } if (data is List) { @@ -1705,7 +1705,10 @@ class ApiService { final response = await _dio.get('/api/v1/images/models'); final data = response.data; if (data is List) { - return data.cast>(); + return _normalizeList( + data, + debugLabel: 'parse_image_models', + ); } return []; } @@ -3120,19 +3123,25 @@ class ApiService { final data = response.data; if (data is List) { - return data.whereType>().toList(); + return _normalizeList( + data, + debugLabel: 'parse_message_search', + ); } if (data is Map) { final list = (data['items'] ?? data['results'] ?? data['messages']); if (list is List) { - return list.whereType>().toList(); + return _normalizeList( + list, + debugLabel: 'parse_message_search_wrapped', + ); } } - return []; + return const []; } on DioException catch (e) { // On any transport or other error, degrade gracefully without surfacing _traceApi('messages search request failed gracefully: ${e.type}'); - return []; + return const []; } }