From 989303db775710a6e88677018de8fc126058ee49 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 8 Mar 2026 21:36:21 +0100 Subject: [PATCH] fix(ui): gracefully handle json parse error when showLogs receives 404 text string --- lib/features/iptv/widgets/recordings_tab.dart | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/features/iptv/widgets/recordings_tab.dart b/lib/features/iptv/widgets/recordings_tab.dart index d3a60d6..3bd6544 100644 --- a/lib/features/iptv/widgets/recordings_tab.dart +++ b/lib/features/iptv/widgets/recordings_tab.dart @@ -76,8 +76,13 @@ class _RecordingsTabState extends State { final response = await http.get(Uri.parse('/api/recordings/logs/$id')); if (response.statusCode == 200) { - final data = json.decode(response.body); - final logs = data['logs'] ?? 'Aucun log trouvé.'; + String logs = 'Aucun log trouvé.'; + try { + final data = json.decode(response.body); + logs = data['logs'] ?? 'Aucun log trouvé.'; + } catch (_) { + logs = response.body; // Fallback texte brut + } if (mounted) { showDialog( @@ -109,9 +114,16 @@ class _RecordingsTabState extends State { } } else { if (mounted) { - final data = json.decode(response.body); + String errorMessage = 'Erreur serveur ${response.statusCode}'; + try { + final data = json.decode(response.body); + errorMessage = data['error'] ?? errorMessage; + } catch (_) { + errorMessage = 'Erreur ${response.statusCode}: ${response.body}'; + } + ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(data['error'] ?? 'Erreur lors de la récupération des logs'), backgroundColor: Colors.orangeAccent), + SnackBar(content: Text(errorMessage), backgroundColor: Colors.orangeAccent), ); } }