From 70f0e4ddfd0ae27dadb9228debcfa0fa5a59a0f0 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Tue, 16 Sep 2025 09:48:23 -0400 Subject: [PATCH] chore: add snackbar message after pinging course participants (#3995) --- lib/l10n/intl_en.arb | 3 ++- .../activity_session_start_page.dart | 13 +++++++++- lib/pangea/payload_client/payload_client.dart | 24 ++++++++++++++++++- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 211e46716..ae4eab74e 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -5246,5 +5246,6 @@ "inviteFriendsToCourse": "Invite friends to my course", "subscribeToUnlockActivitySummaries": "Subscribe to unlock activity summaries", "subscribeToUnlockDefinitions": "Subscribe to unlock definitions", - "subscribeToUnlockTranscriptions": "Subscribe to unlock transcriptions" + "subscribeToUnlockTranscriptions": "Subscribe to unlock transcriptions", + "pingSent": "🔔 Course ping sent! 🔔" } diff --git a/lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart b/lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart index 76407d2c8..12f755787 100644 --- a/lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart +++ b/lib/pangea/activity_sessions/activity_session_start/activity_session_start_page.dart @@ -332,7 +332,18 @@ class ActivitySessionStartController extends State { }, ); - if (mounted) setState(() {}); + if (mounted) { + setState(() {}); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + L10n.of(context).pingSent, + textAlign: TextAlign.center, + ), + duration: const Duration(milliseconds: 2000), + ), + ); + } } Future playWithBot() async { diff --git a/lib/pangea/payload_client/payload_client.dart b/lib/pangea/payload_client/payload_client.dart index d00c8d021..8b5be8df5 100644 --- a/lib/pangea/payload_client/payload_client.dart +++ b/lib/pangea/payload_client/payload_client.dart @@ -125,7 +125,7 @@ class PayloadClient { '$basePath/$collection${queryParams.isNotEmpty ? '?${queryStringify(queryParams)}' : ''}'; final response = await get(endpoint); - if (response.statusCode != 200) { + if (response.statusCode >= 400) { throw Exception( 'Failed to load documents: ${response.statusCode} ${response.body}', ); @@ -144,6 +144,11 @@ class PayloadClient { ) async { final endpoint = '$basePath/$collection/$id'; final response = await get(endpoint); + if (response.statusCode >= 400) { + throw Exception( + 'Failed to load document: ${response.statusCode} ${response.body}', + ); + } final json = jsonDecode(response.body) as Map; return fromJson(json); } @@ -156,6 +161,13 @@ class PayloadClient { ) async { final endpoint = '$basePath/$collection'; final response = await post(endpoint, data); + + if (response.statusCode >= 400) { + throw Exception( + 'Failed to create document: ${response.statusCode} ${response.body}', + ); + } + final json = jsonDecode(response.body) as Map; return fromJson(json); } @@ -169,6 +181,11 @@ class PayloadClient { ) async { final endpoint = '$basePath/$collection/$id'; final response = await patch(endpoint, data); + if (response.statusCode >= 400) { + throw Exception( + 'Failed to update document: ${response.statusCode} ${response.body}', + ); + } final json = jsonDecode(response.body) as Map; return fromJson(json); } @@ -181,6 +198,11 @@ class PayloadClient { ) async { final endpoint = '$basePath/$collection/$id'; final response = await delete(endpoint); + if (response.statusCode >= 400) { + throw Exception( + 'Failed to delete document: ${response.statusCode} ${response.body}', + ); + } final json = jsonDecode(response.body) as Map; return fromJson(json); }