Skip to content

Commit 26a383e

Browse files
committed
add replaceMentionChipSpans function
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
1 parent 3179849 commit 26a383e

1 file changed

Lines changed: 30 additions & 47 deletions

File tree

app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt

Lines changed: 30 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)