From 4d2f36890faa6f2b829429b5f457bc6b72b7d834 Mon Sep 17 00:00:00 2001 From: William Jordan-Cooley Date: Mon, 21 Oct 2024 14:40:54 -0400 Subject: [PATCH] additional error handling in retrieval of practice events --- .../pangea_message_event.dart | 24 ++++++++++++------- .../practice_activity/word_audio_button.dart | 18 +++++++------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/lib/pangea/matrix_event_wrappers/pangea_message_event.dart b/lib/pangea/matrix_event_wrappers/pangea_message_event.dart index 13da5ace8..3b3a4c1db 100644 --- a/lib/pangea/matrix_event_wrappers/pangea_message_event.dart +++ b/lib/pangea/matrix_event_wrappers/pangea_message_event.dart @@ -587,18 +587,27 @@ class PangeaMessageEvent { /// Returns a list of all [PracticeActivityEvent] objects /// associated with this message event. List get _practiceActivityEvents { - return _latestEdit + final List events = _latestEdit .aggregatedEvents( timeline, PangeaEventTypes.pangeaActivity, ) - .map( - (e) => PracticeActivityEvent( - timeline: timeline, - event: e, - ), - ) .toList(); + + final List practiceEvents = []; + for (final event in events) { + try { + practiceEvents.add( + PracticeActivityEvent( + timeline: timeline, + event: event, + ), + ); + } catch (e, s) { + ErrorHandler.logError(e: e, s: s, data: event.toJson()); + } + } + return practiceEvents; } /// Returns a boolean value indicating whether there are any @@ -617,7 +626,6 @@ class PangeaMessageEvent { String langCode, { bool debug = false, }) { - // @wcjord - disabled try catch for testing try { debugger(when: debug); final List activities = []; diff --git a/lib/pangea/widgets/practice_activity/word_audio_button.dart b/lib/pangea/widgets/practice_activity/word_audio_button.dart index bdc76caaf..8602a48d8 100644 --- a/lib/pangea/widgets/practice_activity/word_audio_button.dart +++ b/lib/pangea/widgets/practice_activity/word_audio_button.dart @@ -48,17 +48,17 @@ class WordAudioButtonState extends State { onPressed: () async { if (_isPlaying) { await ttsController.tts.stop(); - setState(() { - _isPlaying = false; - }); + if (mounted) { + setState(() => _isPlaying = false); + } } else { - setState(() { - _isPlaying = true; - }); + if (mounted) { + setState(() => _isPlaying = true); + } await ttsController.speak(widget.text); - setState(() { - _isPlaying = false; - }); + if (mounted) { + setState(() => _isPlaying = false); + } } }, // Disable button if language isn't supported ),