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,36 +142,41 @@ class MessageOverlayController extends State tts.setupTTS(); - _setInitialToolbarModeAndSelectedSpan(); - } - - MessageAnalyticsEntry? get messageAnalyticsEntry => tokens != null - ? MatrixState.pangeaController.getAnalytics.perMessage.get( - tokens!, - // this logic should be in the controller - !pangeaMessageEvent.ownMessage && - pangeaMessageEvent.messageDisplayRepresentation?.tokens != null, - ) - : null; - - Future _getTokens() async { - tokens = pangeaMessageEvent.originalSent?.tokens; + activitiesLeftToComplete = activitiesLeftToComplete - + widget._pangeaMessageEvent.numberOfActivitiesCompleted; - if (pangeaMessageEvent.originalSent != null && tokens == null) { - debugPrint("fetching tokens"); + if (pangeaMessageEvent.originalSent != null) { pangeaMessageEvent.originalSent! .tokensGlobal( pangeaMessageEvent.senderId, pangeaMessageEvent.originServerTs, ) - .then((tokens) { - // this isn't currently working because originalSent's _event is null - this.tokens = tokens; + .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 + ? MatrixState.pangeaController.getAnalytics.perMessage.get( + tokens!, + // this logic should be in the controller + !pangeaMessageEvent.ownMessage && + pangeaMessageEvent.messageDisplayRepresentation?.tokens != null, + ) + : null; + /// 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() {