mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-09 13:59:48 +01:00
editing mentions work
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
parent
15f3240f98
commit
e33e7fd0fb
@ -926,6 +926,7 @@ class MessageInputFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun setEditUI(message: ChatMessage) {
|
private fun setEditUI(message: ChatMessage) {
|
||||||
val editedMessage = ChatUtils.getParsedMessage(message.message, message.messageParameters)
|
val editedMessage = ChatUtils.getParsedMessage(message.message, message.messageParameters)
|
||||||
binding.fragmentEditView.editMessage.text = editedMessage
|
binding.fragmentEditView.editMessage.text = editedMessage
|
||||||
@ -937,32 +938,14 @@ class MessageInputFragment : Fragment() {
|
|||||||
binding.fragmentMessageInputView.editMessageButton.visibility = View.VISIBLE
|
binding.fragmentMessageInputView.editMessageButton.visibility = View.VISIBLE
|
||||||
binding.fragmentEditView.editMessageView.visibility = View.VISIBLE
|
binding.fragmentEditView.editMessageView.visibility = View.VISIBLE
|
||||||
binding.fragmentMessageInputView.attachmentButton.visibility = View.GONE
|
binding.fragmentMessageInputView.attachmentButton.visibility = View.GONE
|
||||||
|
|
||||||
binding.fragmentMessageInputView.editMessageButton.setOnClickListener {
|
binding.fragmentMessageInputView.editMessageButton.setOnClickListener {
|
||||||
val editable = binding.fragmentMessageInputView.inputEditText!!.editableText
|
|
||||||
val mentionSpans = editable.getSpans(
|
val inputEditText = binding.fragmentMessageInputView.inputEditText!!.text.toString()
|
||||||
0,
|
|
||||||
editable.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 + "\""
|
|
||||||
}
|
|
||||||
editable.replace(editable.getSpanStart(mentionSpan), editable.getSpanEnd(mentionSpan), "@$mentionId")
|
|
||||||
}
|
|
||||||
val message = chatActivity.messageInputViewModel.getEditChatMessage.value as ChatMessage
|
val message = chatActivity.messageInputViewModel.getEditChatMessage.value as ChatMessage
|
||||||
if (message.message!!.trim() != editable?.trim()) {
|
if (message.message!!.trim() != inputEditText.trim()) {
|
||||||
editMessageAPI(message, editable!!.toString())
|
val editedMessage = messageUtils.processEditMessageParameters(message.messageParameters!!, message,
|
||||||
|
inputEditText)
|
||||||
|
editMessageAPI(message, editedMessage.toString())
|
||||||
}
|
}
|
||||||
clearEditUI()
|
clearEditUI()
|
||||||
}
|
}
|
||||||
@ -971,6 +954,7 @@ class MessageInputFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun clearEditUI() {
|
private fun clearEditUI() {
|
||||||
binding.fragmentMessageInputView.editMessageButton.visibility = View.GONE
|
binding.fragmentMessageInputView.editMessageButton.visibility = View.GONE
|
||||||
binding.fragmentMessageInputView.inputEditText.setText("")
|
binding.fragmentMessageInputView.inputEditText.setText("")
|
||||||
|
@ -159,6 +159,41 @@ class MessageUtils(val context: Context) {
|
|||||||
return messageStringInternal
|
return messageStringInternal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun processEditMessageParameters(
|
||||||
|
messageParameters: HashMap<String?, HashMap<String?, String?>>?,
|
||||||
|
message: ChatMessage?,
|
||||||
|
inputEditText:String
|
||||||
|
): Spanned {
|
||||||
|
|
||||||
|
var result = inputEditText.toString()
|
||||||
|
for ((key, valueMap) in messageParameters!!) {
|
||||||
|
if (key != null) {
|
||||||
|
val mentionId = valueMap["mention-id"]
|
||||||
|
val type = valueMap["type"]
|
||||||
|
val name = valueMap["name"]
|
||||||
|
val user = message?.activeUser
|
||||||
|
if (user != null && mentionId != null && type != null) {
|
||||||
|
val placeholder = "@$name"
|
||||||
|
when (type) {
|
||||||
|
"user", "guest", "email" -> {
|
||||||
|
result = result.replace(placeholder, "@$mentionId", ignoreCase = false)
|
||||||
|
}
|
||||||
|
"user-group", "circle" ->{
|
||||||
|
val mentionId = "\"" + mentionId + "\""
|
||||||
|
result = result.replace(placeholder, "@$mentionId", ignoreCase = false)
|
||||||
|
}
|
||||||
|
"call" -> {
|
||||||
|
result = result.replace(placeholder,"@all", ignoreCase = false )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SpannableString(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun defaultMessageParameters(
|
private fun defaultMessageParameters(
|
||||||
messageString: Spanned,
|
messageString: Spanned,
|
||||||
individualHashMap: HashMap<String?, String?>,
|
individualHashMap: HashMap<String?, String?>,
|
||||||
|
Loading…
Reference in New Issue
Block a user