From e3416c967f2b961644f9815fc37ff45341fb93e6 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 13 Nov 2024 11:27:05 -0500 Subject: [PATCH 1/2] pass up audio card error to practice activity card --- lib/pangea/widgets/chat/message_audio_card.dart | 3 +++ .../widgets/practice_activity/multiple_choice_activity.dart | 3 +++ .../widgets/practice_activity/practice_activity_card.dart | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/lib/pangea/widgets/chat/message_audio_card.dart b/lib/pangea/widgets/chat/message_audio_card.dart index 5b6f9b539..8b1f86091 100644 --- a/lib/pangea/widgets/chat/message_audio_card.dart +++ b/lib/pangea/widgets/chat/message_audio_card.dart @@ -22,6 +22,7 @@ class MessageAudioCard extends StatefulWidget { final PangeaTokenText? selection; final TtsController tts; final Function(bool) setIsPlayingAudio; + final VoidCallback? onError; const MessageAudioCard({ super.key, @@ -30,6 +31,7 @@ class MessageAudioCard extends StatefulWidget { required this.tts, required this.setIsPlayingAudio, this.selection, + this.onError, }); @override @@ -163,6 +165,7 @@ class MessageAudioCardState extends State { if (mounted) setState(() => _isLoading = false); } catch (e, s) { debugger(when: kDebugMode); + widget.onError?.call(); debugPrint(StackTrace.current.toString()); if (!mounted) return; setState(() => _isLoading = false); diff --git a/lib/pangea/widgets/practice_activity/multiple_choice_activity.dart b/lib/pangea/widgets/practice_activity/multiple_choice_activity.dart index 114079cfa..e685d7272 100644 --- a/lib/pangea/widgets/practice_activity/multiple_choice_activity.dart +++ b/lib/pangea/widgets/practice_activity/multiple_choice_activity.dart @@ -22,6 +22,7 @@ class MultipleChoiceActivity extends StatefulWidget { final PracticeActivityModel currentActivity; final TtsController tts; final String eventID; + final VoidCallback? onError; const MultipleChoiceActivity({ super.key, @@ -29,6 +30,7 @@ class MultipleChoiceActivity extends StatefulWidget { required this.currentActivity, required this.tts, required this.eventID, + this.onError, }); @override @@ -143,6 +145,7 @@ class MultipleChoiceActivityState extends State { tts: widget.practiceCardController.widget.overlayController.tts, setIsPlayingAudio: widget.practiceCardController.widget .overlayController.setIsPlayingAudio, + onError: widget.onError, ), ChoicesArray( isLoading: false, diff --git a/lib/pangea/widgets/practice_activity/practice_activity_card.dart b/lib/pangea/widgets/practice_activity/practice_activity_card.dart index 2d32e036c..c412ac1dc 100644 --- a/lib/pangea/widgets/practice_activity/practice_activity_card.dart +++ b/lib/pangea/widgets/practice_activity/practice_activity_card.dart @@ -306,6 +306,10 @@ class PracticeActivityCardState extends State { } } + void _onDownstreamError() { + _setPracticeActivity(null); + } + /// clear the current activity, record, and selection /// fetch a new activity, including the offending activity in the request Future submitFeedback(String feedback) async { @@ -373,6 +377,7 @@ class PracticeActivityCardState extends State { currentActivity: currentActivity!, tts: widget.ttsController, eventID: widget.pangeaMessageEvent.eventId, + onError: _onDownstreamError, ); } } From 7c7c3c999b30c5b7e45f6524513c26bcffd7eb6f Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 13 Nov 2024 11:38:35 -0500 Subject: [PATCH 2/2] on error, reveal all tokens --- lib/pangea/controllers/message_analytics_controller.dart | 6 ++++++ lib/pangea/widgets/chat/message_audio_card.dart | 6 ++---- .../widgets/practice_activity/practice_activity_card.dart | 8 ++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/pangea/controllers/message_analytics_controller.dart b/lib/pangea/controllers/message_analytics_controller.dart index 46e656dc1..6bbbc9979 100644 --- a/lib/pangea/controllers/message_analytics_controller.dart +++ b/lib/pangea/controllers/message_analytics_controller.dart @@ -121,6 +121,12 @@ class MessageAnalyticsEntry { isFirstTimeComputing = false; } + void revealAllTokens() { + for (final token in tokensWithXp) { + token.targetTypes.remove(ActivityTypeEnum.hiddenWordListening); + } + } + bool get shouldHideToken => tokensWithXp.any( (token) => token.targetTypes.contains(ActivityTypeEnum.hiddenWordListening), diff --git a/lib/pangea/widgets/chat/message_audio_card.dart b/lib/pangea/widgets/chat/message_audio_card.dart index 8b1f86091..242d2ca9b 100644 --- a/lib/pangea/widgets/chat/message_audio_card.dart +++ b/lib/pangea/widgets/chat/message_audio_card.dart @@ -164,11 +164,8 @@ class MessageAudioCardState extends State { setSectionStartAndEndFromSelection(); if (mounted) setState(() => _isLoading = false); } catch (e, s) { - debugger(when: kDebugMode); widget.onError?.call(); - debugPrint(StackTrace.current.toString()); - if (!mounted) return; - setState(() => _isLoading = false); + debugger(when: kDebugMode); ErrorHandler.logError( e: e, s: s, @@ -178,6 +175,7 @@ class MessageAudioCardState extends State { widget.messageEvent.messageDisplayLangCode, }, ); + if (mounted) setState(() => _isLoading = false); } } diff --git a/lib/pangea/widgets/practice_activity/practice_activity_card.dart b/lib/pangea/widgets/practice_activity/practice_activity_card.dart index c412ac1dc..453059a5b 100644 --- a/lib/pangea/widgets/practice_activity/practice_activity_card.dart +++ b/lib/pangea/widgets/practice_activity/practice_activity_card.dart @@ -292,12 +292,11 @@ class PracticeActivityCardState extends State { _setPracticeActivity(result.last as PracticeActivityModel?); } catch (e, s) { - _setPracticeActivity(null); + _onError(); debugger(when: kDebugMode); ErrorHandler.logError( e: e, s: s, - m: 'Failed to get new activity', data: { 'activity': currentActivity, 'record': currentCompletionRecord, @@ -306,7 +305,8 @@ class PracticeActivityCardState extends State { } } - void _onDownstreamError() { + void _onError() { + messageAnalyticsEntry?.revealAllTokens(); _setPracticeActivity(null); } @@ -377,7 +377,7 @@ class PracticeActivityCardState extends State { currentActivity: currentActivity!, tts: widget.ttsController, eventID: widget.pangeaMessageEvent.eventId, - onError: _onDownstreamError, + onError: _onError, ); } }