@@ -417,39 +417,17 @@ class MessageInputFragment : Fragment() {
417417 }
418418
419419 binding.fragmentMessageInputView.editMessageButton.setOnClickListener {
420- val inputEditText = binding.fragmentMessageInputView.inputEditText!! .editableText
421- val mentionSpans = inputEditText.getSpans(
422- 0 ,
423- inputEditText.length,
424- Spans .MentionChipSpan ::class .java
425- )
426- var mentionSpan: Spans .MentionChipSpan
427- for (i in mentionSpans.indices) {
428- mentionSpan = mentionSpans[i]
429- var mentionId = mentionSpan.id
430- val shouldQuote = mentionId.contains(" " ) ||
431- mentionId.contains(" @" ) ||
432- mentionId.startsWith(" guest/" ) ||
433- mentionId.startsWith(" group/" ) ||
434- mentionId.startsWith(" email/" ) ||
435- mentionId.startsWith(" team/" )
436- if (shouldQuote) {
437- mentionId = " \" " + mentionId + " \" "
438- }
439- inputEditText.replace(
440- inputEditText.getSpanStart(mentionSpan),
441- inputEditText.getSpanEnd(mentionSpan),
442- " @$mentionId "
443- )
444- }
420+ val editable = binding.fragmentMessageInputView.inputEditText!! .editableText
421+ replaceMentionChipSpans(editable)
422+ val inputEditText = editable.toString()
445423
446424 val message = chatActivity.messageInputViewModel.getEditChatMessage.value as ChatMessage
447425 if (message.message!! .trim() != inputEditText.trim()) {
448426 if (message.messageParameters != null ) {
449427 val editedMessage = messageUtils.processEditMessageParameters(
450428 message.messageParameters!! ,
451429 message,
452- inputEditText.toString()
430+ inputEditText
453431 )
454432 editMessageAPI(message, editedMessage.toString())
455433 } else {
@@ -876,27 +854,7 @@ class MessageInputFragment : Fragment() {
876854 private fun submitMessage (sendWithoutNotification : Boolean ) {
877855 if (binding.fragmentMessageInputView.inputEditText != null ) {
878856 val editable = binding.fragmentMessageInputView.inputEditText!! .editableText
879- val mentionSpans = editable.getSpans(
880- 0 ,
881- editable.length,
882- Spans .MentionChipSpan ::class .java
883- )
884- var mentionSpan: Spans .MentionChipSpan
885- for (i in mentionSpans.indices) {
886- mentionSpan = mentionSpans[i]
887- var mentionId = mentionSpan.id
888- val shouldQuote = mentionId.contains(" " ) ||
889- mentionId.contains(" @" ) ||
890- mentionId.startsWith(" guest/" ) ||
891- mentionId.startsWith(" group/" ) ||
892- mentionId.startsWith(" email/" ) ||
893- mentionId.startsWith(" team/" )
894- if (shouldQuote) {
895- mentionId = " \" " + mentionId + " \" "
896- }
897- editable.replace(editable.getSpanStart(mentionSpan), editable.getSpanEnd(mentionSpan), " @$mentionId " )
898- }
899-
857+ replaceMentionChipSpans(editable)
900858 binding.fragmentMessageInputView.inputEditText?.setText(" " )
901859 sendStopTypingMessage()
902860 val replyMessageId = binding.fragmentMessageInputView
@@ -926,6 +884,31 @@ class MessageInputFragment : Fragment() {
926884 )
927885 }
928886
887+ private fun replaceMentionChipSpans (editable : Editable ) {
888+ val mentionSpans = editable.getSpans(
889+ 0 ,
890+ editable.length,
891+ Spans .MentionChipSpan ::class .java
892+ )
893+ for (mentionSpan in mentionSpans) {
894+ var mentionId = mentionSpan.id
895+ val shouldQuote = mentionId.contains(" " ) ||
896+ mentionId.contains(" @" ) ||
897+ mentionId.startsWith(" guest/" ) ||
898+ mentionId.startsWith(" group/" ) ||
899+ mentionId.startsWith(" email/" ) ||
900+ mentionId.startsWith(" team/" )
901+ if (shouldQuote) {
902+ mentionId = " \" $mentionId \" "
903+ }
904+ editable.replace(
905+ editable.getSpanStart(mentionSpan),
906+ editable.getSpanEnd(mentionSpan),
907+ " @$mentionId "
908+ )
909+ }
910+ }
911+
929912 private fun showSendButtonMenu () {
930913 val popupMenu = PopupMenu (
931914 ContextThemeWrapper (requireContext(), R .style.ChatSendButtonMenu ),
0 commit comments