From 0e48228cd153ef05dbc82bc68794f9a26db98ff2 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Mon, 17 Feb 2025 14:52:27 -0500 Subject: [PATCH] fix: more accurate splitting of tokens containing punctuation (#1822) --- .../toolbar/widgets/message_token_text.dart | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/pangea/toolbar/widgets/message_token_text.dart b/lib/pangea/toolbar/widgets/message_token_text.dart index 82994bdbd..87ee21166 100644 --- a/lib/pangea/toolbar/widgets/message_token_text.dart +++ b/lib/pangea/toolbar/widgets/message_token_text.dart @@ -244,18 +244,23 @@ class MessageTextWidget extends StatelessWidget { String middle = substring; String end = ''; + final startSplitIndex = + (tokenPosition.tokenStart - tokenPosition.start); + final endSplitIndex = (tokenPosition.end - tokenPosition.tokenEnd); + if (tokenPosition.tokenStart != tokenPosition.start) { - final splitIndex = - (tokenPosition.tokenStart - tokenPosition.start); - start = substring.substring(0, splitIndex); - middle = substring.substring(splitIndex); + start = substring.substring(0, startSplitIndex); } if (tokenPosition.end != tokenPosition.tokenEnd) { - final splitIndex = (tokenPosition.end - tokenPosition.start) - - (tokenPosition.end - tokenPosition.tokenEnd); - middle = middle.substring(0, splitIndex); - end = substring.substring(splitIndex); + end = substring.substring(endSplitIndex); + } + + if (start.isNotEmpty || end.isNotEmpty) { + middle = substring.substring( + start.isEmpty ? 0 : start.length, + substring.length - (end.isEmpty ? 0 : end.length), + ); } return WidgetSpan(