From 22625f461c3be355790f76af1f3c7562df2165d9 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 13 Nov 2024 11:10:37 -0500 Subject: [PATCH] showToolbar on click non-toolbar message, don't re-launch on toolbar on token selected, and highlight selected tokens when appropriate --- lib/pages/chat/events/message_content.dart | 6 ++++-- .../chat/message_token_text_stateful.dart | 17 ++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/pages/chat/events/message_content.dart b/lib/pages/chat/events/message_content.dart index 968d75ad3..b04491ef6 100644 --- a/lib/pages/chat/events/message_content.dart +++ b/lib/pages/chat/events/message_content.dart @@ -308,14 +308,16 @@ class MessageContent extends StatelessWidget { if (pangeaMessageEvent?.messageDisplayRepresentation?.tokens != null) { - return MessageTokenTextStateful( + return MessageTokenText( messageAnalyticsEntry: controller.pangeaController.getAnalytics.perMessage.get( pangeaMessageEvent!, false, )!, style: messageTextStyle, - onClick: (token) => controller.showToolbar(pangeaMessageEvent!), + onClick: overlayController?.onClickOverlayMessageToken ?? + (_) => controller.showToolbar(pangeaMessageEvent!), + isSelected: overlayController?.isTokenSelected, ); } diff --git a/lib/pangea/widgets/chat/message_token_text_stateful.dart b/lib/pangea/widgets/chat/message_token_text_stateful.dart index f5e40062f..fcc0fe7d6 100644 --- a/lib/pangea/widgets/chat/message_token_text_stateful.dart +++ b/lib/pangea/widgets/chat/message_token_text_stateful.dart @@ -9,22 +9,23 @@ import 'package:flutter/material.dart'; /// Question - does this need to be stateful or does this work? /// Need to test. -class MessageTokenTextStateful extends StatelessWidget { +class MessageTokenText extends StatelessWidget { final PangeaController pangeaController = MatrixState.pangeaController; final MessageAnalyticsEntry messageAnalyticsEntry; final TextStyle style; + final bool Function(PangeaToken)? isSelected; final void Function(PangeaToken)? onClick; - bool get ownMessage => messageAnalyticsEntry.pmEvent.ownMessage; - MessageTokenTextStateful({ + MessageTokenText({ super.key, required this.messageAnalyticsEntry, required this.style, required this.onClick, + this.isSelected, }); PangeaMessageEvent get pangeaMessageEvent => messageAnalyticsEntry.pmEvent; @@ -47,13 +48,16 @@ class MessageTokenTextStateful extends StatelessWidget { final int startIndex = messageCharacters.take(start).length; final int endIndex = messageCharacters.take(end).length; + final hideContent = + token.targetTypes.contains(ActivityTypeEnum.hiddenWordListening); + if (globalIndex < startIndex) { tokenPositions.add( TokenPosition( start: globalIndex, end: startIndex, hideContent: false, - highlight: false, + highlight: isSelected?.call(token.token) ?? false, ), ); } @@ -63,9 +67,8 @@ class MessageTokenTextStateful extends StatelessWidget { start: startIndex, end: endIndex, token: token.token, - hideContent: - token.targetTypes.contains(ActivityTypeEnum.hiddenWordListening), - highlight: false, + hideContent: hideContent, + highlight: (isSelected?.call(token.token) ?? false) && !hideContent, ), ); globalIndex = endIndex;