Merge pull request #4703 from nextcloud/fix_placeholder_support

display label in the placeholder
This commit is contained in:
Sowjanya Kota 2025-02-17 16:56:21 +01:00 committed by GitHub
commit b3186bac76
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 37 additions and 6 deletions

View File

@ -29,17 +29,21 @@ class ChatUtils {
if (individualHashMap != null) {
val type = individualHashMap["type"]
resultMessage = if (type == "user" || type == "guest" || type == "call" || type == "email" ||
type == "circle"
resultMessage = if (type == "user" || type == "guest" || type == "call" || type == "email"
) {
resultMessage?.replace("{$key}", "@" + individualHashMap["name"])
} else if (type == "geo-location") {
individualHashMap["name"]
} else if (individualHashMap.containsKey("link") == true) {
} else if (individualHashMap.containsKey("link")) {
if (type == "file") {
resultMessage?.replace("{$key}", individualHashMap["name"].toString())
} else {
individualHashMap["link"].toString()
individualHashMap["name"]?.let {
resultMessage?.replace(
"{$key}",
individualHashMap["name"]!!
)
}
}
} else {
individualHashMap["name"]?.let { resultMessage?.replace("{$key}", it) }

View File

@ -8,9 +8,12 @@ package com.nextcloud.talk.utils.message
import android.content.Context
import android.content.Intent
import android.graphics.Typeface
import android.net.Uri
import android.text.SpannableString
import android.text.SpannableStringBuilder
import android.text.Spanned
import android.text.style.StyleSpan
import android.util.Log
import android.view.View
import com.nextcloud.talk.R
@ -140,13 +143,38 @@ class MessageUtils(val context: Context) {
context.startActivity(browserIntent)
}
}
else -> {
messageStringInternal = defaultMessageParameters(messageStringInternal, individualHashMap, key)
}
}
}
}
return messageStringInternal
}
private fun defaultMessageParameters(
messageString: Spanned,
individualHashMap: HashMap<String?, String?>,
key: String?
): Spanned {
val spannable = SpannableStringBuilder(messageString)
val placeholder = "{$key}"
val replacementText = individualHashMap["name"]
var start = spannable.indexOf(placeholder)
while (start != -1) {
val end = start + placeholder.length
spannable.replace(start, end, replacementText)
spannable.setSpan(
StyleSpan(Typeface.BOLD),
start,
start + replacementText!!.length,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
start = spannable.indexOf(placeholder, start + replacementText.length)
}
return spannable
}
fun getRenderedMarkdownText(context: Context, markdown: String, textColor: Int): Spanned {
val drawable = TaskListDrawable(textColor, textColor, context.getColor(R.color.bg_default))
val markwon = Markwon.builder(context).usePlugin(object : AbstractMarkwonPlugin() {
@ -168,6 +196,5 @@ class MessageUtils(val context: Context) {
companion object {
private const val TAG = "MessageUtils"
const val MAX_REPLY_LENGTH = 250
const val HTTPS_PROTOCOL = "https://"
}
}