From 585a9a2be49b2eb0cc4e522b65ff1c3b257903ca Mon Sep 17 00:00:00 2001 From: William Jordan-Cooley Date: Fri, 15 Nov 2024 15:45:00 -0500 Subject: [PATCH 1/2] silly way of initializing --- .../chat/message_selection_overlay.dart | 55 ++++++++++--------- lib/pangea/widgets/chat/message_toolbar.dart | 2 + 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/lib/pangea/widgets/chat/message_selection_overlay.dart b/lib/pangea/widgets/chat/message_selection_overlay.dart index 6254db276..5b4928fdb 100644 --- a/lib/pangea/widgets/chat/message_selection_overlay.dart +++ b/lib/pangea/widgets/chat/message_selection_overlay.dart @@ -62,6 +62,9 @@ class MessageOverlayController extends State MessageMode toolbarMode = MessageMode.translation; PangeaTokenText? _selectedSpan; + List? tokens; + bool initialized = false; + /// The number of activities that need to be completed before the toolbar is unlocked /// If we don't have any good activities for them, we'll decrease this number static const int neededActivities = 3; @@ -101,8 +104,6 @@ class MessageOverlayController extends State : null; } - List? tokens; - @override void initState() { super.initState(); @@ -113,17 +114,12 @@ class MessageOverlayController extends State ); debugPrint( - "selected token: ${widget._initialSelectedToken?.toJson()} total_xp:${widget._initialSelectedToken?.xp} vocab_construct_xp: ${widget._initialSelectedToken?.vocabConstruct.points} daysSincelastUseInWordMeaning ${widget._initialSelectedToken?.daysSinceLastUseByType(ActivityTypeEnum.wordMeaning)}", + "selected token: ${widget._initialSelectedToken?.text.content} total_xp:${widget._initialSelectedToken?.xp} vocab_construct_xp: ${widget._initialSelectedToken?.vocabConstruct.points} daysSincelastUseInWordMeaning ${widget._initialSelectedToken?.daysSinceLastUseByType(ActivityTypeEnum.wordMeaning)}", ); debugPrint( "${widget._initialSelectedToken?.vocabConstruct.uses.map((u) => "${u.useType} ${u.timeStamp}").join(", ")}", ); - _getTokens(); - - activitiesLeftToComplete = activitiesLeftToComplete - - widget._pangeaMessageEvent.numberOfActivitiesCompleted; - _reactionSubscription = widget.chatController.room.client.onSync.stream.where( (update) { @@ -146,7 +142,30 @@ class MessageOverlayController extends State tts.setupTTS(); - _setInitialToolbarModeAndSelectedSpan(); + activitiesLeftToComplete = activitiesLeftToComplete - + widget._pangeaMessageEvent.numberOfActivitiesCompleted; + + if (pangeaMessageEvent.originalSent != null) { + pangeaMessageEvent.originalSent! + .tokensGlobal( + pangeaMessageEvent.senderId, + pangeaMessageEvent.originServerTs, + ) + .then( + (tokens) { + this.tokens = tokens; + _setInitialToolbarModeAndSelectedSpan(); + initialized = true; + }, + ).onError((e, stackTrace) { + ErrorHandler.logError(e: "Error getting tokens: $e", s: stackTrace); + _setInitialToolbarModeAndSelectedSpan(); + initialized = true; + }); + } else { + _setInitialToolbarModeAndSelectedSpan(); + initialized = true; + } } MessageAnalyticsEntry? get messageAnalyticsEntry => tokens != null @@ -158,24 +177,6 @@ class MessageOverlayController extends State ) : null; - Future _getTokens() async { - tokens = pangeaMessageEvent.originalSent?.tokens; - - if (pangeaMessageEvent.originalSent != null && tokens == null) { - debugPrint("fetching tokens"); - pangeaMessageEvent.originalSent! - .tokensGlobal( - pangeaMessageEvent.senderId, - pangeaMessageEvent.originServerTs, - ) - .then((tokens) { - // this isn't currently working because originalSent's _event is null - this.tokens = tokens; - _setInitialToolbarModeAndSelectedSpan(); - }); - } - } - /// We need to check if the setState call is safe to call immediately /// Kept getting the error: setState() or markNeedsBuild() called during build. /// This is a workaround to prevent that error diff --git a/lib/pangea/widgets/chat/message_toolbar.dart b/lib/pangea/widgets/chat/message_toolbar.dart index 63261ddde..647dc5737 100644 --- a/lib/pangea/widgets/chat/message_toolbar.dart +++ b/lib/pangea/widgets/chat/message_toolbar.dart @@ -145,6 +145,8 @@ class MessageToolbar extends StatelessWidget { @override Widget build(BuildContext context) { + if (!overLayController.initialized) return const SizedBox(); + return Container( decoration: BoxDecoration( color: Theme.of(context).cardColor, From 6a3579120d189df388ab6cfc49855e4a277073cd Mon Sep 17 00:00:00 2001 From: ggurdin Date: Mon, 18 Nov 2024 10:02:29 -0500 Subject: [PATCH 2/2] uncomment debug prints --- .../widgets/chat/message_selection_overlay.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/pangea/widgets/chat/message_selection_overlay.dart b/lib/pangea/widgets/chat/message_selection_overlay.dart index 86b5cba38..198247f8b 100644 --- a/lib/pangea/widgets/chat/message_selection_overlay.dart +++ b/lib/pangea/widgets/chat/message_selection_overlay.dart @@ -102,12 +102,6 @@ class MessageOverlayController extends State @override void initState() { super.initState(); - // debugPrint( - // "selected token: ${widget._initialSelectedToken?.text.content} total_xp:${widget._initialSelectedToken?.xp} vocab_construct_xp: ${widget._initialSelectedToken?.vocabConstruct.points} daysSincelastUseInWordMeaning ${widget._initialSelectedToken?.daysSinceLastUseByType(ActivityTypeEnum.wordMeaning)}", - // ); - // debugPrint( - // "${widget._initialSelectedToken?.vocabConstruct.uses.map((u) => "${u.useType} ${u.timeStamp}").join(", ")}", - // ); _getTokens(); _setupSubscriptions(); @@ -117,6 +111,13 @@ class MessageOverlayController extends State _selectedTargetTokenForWordMeaning!, ); } + + debugPrint( + "selected token: ${widget._initialSelectedToken?.text.content} total_xp:${widget._initialSelectedToken?.xp} vocab_construct_xp: ${widget._initialSelectedToken?.vocabConstruct.points} daysSincelastUseInWordMeaning ${widget._initialSelectedToken?.daysSinceLastUseByType(ActivityTypeEnum.wordMeaning)}", + ); + debugPrint( + "${widget._initialSelectedToken?.vocabConstruct.uses.map((u) => "${u.useType} ${u.timeStamp}").join(", ")}", + ); } void _setupSubscriptions() {