diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 27a865cb0..7ee0881e0 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -1486,6 +1486,16 @@ class ChatController extends State void typeEmoji(Emoji? emoji) { if (emoji == null) return; final text = sendController.text; + + // #Pangea + if (!sendController.selection.isValid) { + sendController.value = TextEditingValue( + text: text, + selection: TextSelection.collapsed(offset: text.length), + ); + } + // Pangea# + final selection = sendController.selection; final newText = sendController.text.isEmpty ? emoji.emoji diff --git a/lib/pages/chat/events/html_message.dart b/lib/pages/chat/events/html_message.dart index 314335728..5f4c91434 100644 --- a/lib/pages/chat/events/html_message.dart +++ b/lib/pages/chat/events/html_message.dart @@ -193,8 +193,13 @@ class HtmlMessage extends StatelessWidget { if (tokenIndex == -1) continue; final int tokenLength = tokenText.characters.length; - final before = result[substringIndex].substring(0, tokenIndex); - final after = result[substringIndex].substring(tokenIndex + tokenLength); + final before = + result[substringIndex].characters.take(tokenIndex).toString(); + final after = result[substringIndex] + .characters + .skip(tokenIndex + tokenLength) + .toString(); + result.replaceRange(substringIndex, substringIndex + 1, [ if (before.isNotEmpty) before, '$tokenText',