From 85d996622dbc06617eb342a1a50efa5fef0bfb25 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 23 Jun 2025 19:14:15 +0200 Subject: [PATCH] use mention chips in edit text Signed-off-by: sowjanyakch --- .../talk/chat/MessageInputFragment.kt | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt index e1048c788..a7a798a63 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt @@ -938,11 +938,34 @@ class MessageInputFragment : Fragment() { binding.fragmentMessageInputView.attachmentButton.visibility = View.GONE binding.fragmentMessageInputView.editMessageButton.setOnClickListener { - val inputEditText = binding.fragmentMessageInputView.inputEditText!!.text.toString() + val inputEditText = binding.fragmentMessageInputView.inputEditText!!.editableText + + val mentionSpans = inputEditText.getSpans( + 0, + inputEditText.length, + Spans.MentionChipSpan::class.java + ) + var mentionSpan: Spans.MentionChipSpan + for (i in mentionSpans.indices) { + mentionSpan = mentionSpans[i] + var mentionId = mentionSpan.id + val shouldQuote = mentionId.contains(" ") || + mentionId.contains("@") || + mentionId.startsWith("guest/") || + mentionId.startsWith("group/") || + mentionId.startsWith("email/") || + mentionId.startsWith("team/") + if (shouldQuote) { + mentionId = "\"" + mentionId + "\"" + } + inputEditText.replace(inputEditText.getSpanStart(mentionSpan), inputEditText.getSpanEnd(mentionSpan), + "@$mentionId") + } + val message = chatActivity.messageInputViewModel.getEditChatMessage.value as ChatMessage if (message.message!!.trim() != inputEditText.trim()) { val editedMessage = messageUtils.processEditMessageParameters(message.messageParameters!!, message, - inputEditText) + inputEditText.toString()) editMessageAPI(message, editedMessage.toString()) } clearEditUI()