From 58410ee112d1efb922424e6395eb18147b136e49 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 26 Jun 2025 09:53:59 +0200 Subject: [PATCH] Fixed mentions in chat message if there are more than one --- .../org/linphone/ui/main/chat/model/MessageModel.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt index e489e6c24..067954373 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt @@ -687,6 +687,7 @@ class MessageModel // Check for mentions val chatRoom = chatMessage.chatRoom val matcher = Pattern.compile(MENTION_REGEXP).matcher(textContent) + var offset = 0 while (matcher.find()) { val start = matcher.start() val end = matcher.end() @@ -712,11 +713,11 @@ class MessageModel ) val friend = avatarModel.friend val displayName = friend.name ?: LinphoneUtils.getDisplayName(address) - Log.d( - "$TAG Using display name [$displayName] instead of username [$source]" + Log.i( + "$TAG Using display name [$displayName] instead of mention username [$source]" ) - spannableBuilder.replace(start, end, "@$displayName") + spannableBuilder.replace(start + offset, end + offset, "@$displayName") val span = PatternClickableSpan.StyledClickableSpan( object : SpannableClickedListener { @UiThread @@ -733,10 +734,11 @@ class MessageModel ) spannableBuilder.setSpan( span, - start, - start + displayName.length + 1, + start + offset, + start + offset + displayName.length + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ) + offset += displayName.length - source.length } }