Merge pull request #2069 from etherealvisage/develop
Support data-mx-[bg-]color attribute on <font> tags in formatted messages.
This commit is contained in:
commit
f65e96e7b4
|
@ -44,6 +44,7 @@ Build 🧱:
|
|||
Other changes:
|
||||
- Use File extension functions to make code more concise (#1996)
|
||||
- Create a script to import SAS strings (#1909)
|
||||
- Support `data-mx-[bg-]color` attributes on `<font>` tags.
|
||||
|
||||
Changes in Element 1.0.5 (2020-08-21)
|
||||
===================================================
|
||||
|
|
|
@ -17,6 +17,7 @@ package im.vector.app.features.html
|
|||
|
||||
import android.graphics.Color
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.text.style.BackgroundColorSpan
|
||||
import io.noties.markwon.MarkwonConfiguration
|
||||
import io.noties.markwon.RenderProps
|
||||
import io.noties.markwon.html.HtmlTag
|
||||
|
@ -30,11 +31,21 @@ class FontTagHandler : SimpleTagHandler() {
|
|||
override fun supportedTags() = listOf("font")
|
||||
|
||||
override fun getSpans(configuration: MarkwonConfiguration, renderProps: RenderProps, tag: HtmlTag): Any? {
|
||||
val colorString = tag.attributes()["color"]?.let { parseColor(it) } ?: Color.BLACK
|
||||
return ForegroundColorSpan(colorString)
|
||||
val mxColorString = tag.attributes()["data-mx-color"]
|
||||
val colorString = tag.attributes()["color"]
|
||||
val mxBgColorString = tag.attributes()["data-mx-bg-color"]
|
||||
|
||||
val foregroundColor = mxColorString?.let { parseColor(it, Color.BLACK) } ?: colorString?.let { parseColor(it, Color.BLACK) } ?: Color.BLACK
|
||||
|
||||
if (mxBgColorString != null) {
|
||||
val backgroundColor = parseColor(mxBgColorString, Color.TRANSPARENT)
|
||||
return arrayOf(ForegroundColorSpan(foregroundColor), BackgroundColorSpan(backgroundColor))
|
||||
} else {
|
||||
return ForegroundColorSpan(foregroundColor)
|
||||
}
|
||||
}
|
||||
|
||||
private fun parseColor(colorName: String): Int {
|
||||
private fun parseColor(colorName: String, failResult: Int): Int {
|
||||
try {
|
||||
return Color.parseColor(colorName)
|
||||
} catch (e: Exception) {
|
||||
|
@ -56,7 +67,7 @@ class FontTagHandler : SimpleTagHandler() {
|
|||
"blue" -> Color.BLUE
|
||||
"orange" -> Color.parseColor("#FFA500")
|
||||
"navy" -> Color.parseColor("#000080")
|
||||
else -> Color.BLACK
|
||||
else -> failResult
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue