Merge pull request #7601 from vector-im/feature/ons/fix_truncated_italic_text

Fix italic text is truncated when bubble mode and markdown is enabled (PSG-1006)
This commit is contained in:
Onuray Sahin 2022-11-18 17:25:48 +03:00 committed by GitHub
commit 664b0665cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 1 deletions

1
changelog.d/5679.bugfix Normal file
View file

@ -0,0 +1 @@
Fix italic text is truncated when bubble mode and markdown is enabled

View file

@ -29,6 +29,7 @@ import io.mockk.verify
import io.noties.markwon.core.spans.EmphasisSpan import io.noties.markwon.core.spans.EmphasisSpan
import io.noties.markwon.core.spans.OrderedListItemSpan import io.noties.markwon.core.spans.OrderedListItemSpan
import io.noties.markwon.core.spans.StrongEmphasisSpan import io.noties.markwon.core.spans.StrongEmphasisSpan
import me.gujun.android.span.style.CustomTypefaceSpan
fun Spannable.toTestSpan(): String { fun Spannable.toTestSpan(): String {
var output = toString() var output = toString()
@ -54,7 +55,7 @@ private fun Any.readTags(): SpanTags {
OrderedListItemSpan::class -> SpanTags("[list item]", "[/list item]") OrderedListItemSpan::class -> SpanTags("[list item]", "[/list item]")
HtmlCodeSpan::class -> SpanTags("[code]", "[/code]") HtmlCodeSpan::class -> SpanTags("[code]", "[/code]")
StrongEmphasisSpan::class -> SpanTags("[bold]", "[/bold]") StrongEmphasisSpan::class -> SpanTags("[bold]", "[/bold]")
EmphasisSpan::class -> SpanTags("[italic]", "[/italic]") EmphasisSpan::class, CustomTypefaceSpan::class -> SpanTags("[italic]", "[/italic]")
else -> throw IllegalArgumentException("Unknown ${this::class}") else -> throw IllegalArgumentException("Unknown ${this::class}")
} }
} }

View file

@ -27,6 +27,7 @@ package im.vector.app.features.html
import android.content.Context import android.content.Context
import android.content.res.Resources import android.content.res.Resources
import android.graphics.Typeface
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.text.Spannable import android.text.Spannable
import androidx.core.text.toSpannable import androidx.core.text.toSpannable
@ -40,6 +41,7 @@ import im.vector.app.features.settings.VectorPreferences
import io.noties.markwon.AbstractMarkwonPlugin import io.noties.markwon.AbstractMarkwonPlugin
import io.noties.markwon.Markwon import io.noties.markwon.Markwon
import io.noties.markwon.MarkwonPlugin import io.noties.markwon.MarkwonPlugin
import io.noties.markwon.MarkwonSpansFactory
import io.noties.markwon.PrecomputedFutureTextSetterCompat import io.noties.markwon.PrecomputedFutureTextSetterCompat
import io.noties.markwon.ext.latex.JLatexMathPlugin import io.noties.markwon.ext.latex.JLatexMathPlugin
import io.noties.markwon.ext.latex.JLatexMathTheme import io.noties.markwon.ext.latex.JLatexMathTheme
@ -50,6 +52,8 @@ import io.noties.markwon.inlineparser.EntityInlineProcessor
import io.noties.markwon.inlineparser.HtmlInlineProcessor import io.noties.markwon.inlineparser.HtmlInlineProcessor
import io.noties.markwon.inlineparser.MarkwonInlineParser import io.noties.markwon.inlineparser.MarkwonInlineParser
import io.noties.markwon.inlineparser.MarkwonInlineParserPlugin import io.noties.markwon.inlineparser.MarkwonInlineParserPlugin
import me.gujun.android.span.style.CustomTypefaceSpan
import org.commonmark.node.Emphasis
import org.commonmark.node.Node import org.commonmark.node.Node
import org.commonmark.parser.Parser import org.commonmark.parser.Parser
import org.matrix.android.sdk.api.MatrixUrls.isMxcUrl import org.matrix.android.sdk.api.MatrixUrls.isMxcUrl
@ -123,6 +127,12 @@ class EventHtmlRenderer @Inject constructor(
) )
) )
.usePlugin(object : AbstractMarkwonPlugin() { .usePlugin(object : AbstractMarkwonPlugin() {
override fun configureSpansFactory(builder: MarkwonSpansFactory.Builder) {
builder.setFactory(
Emphasis::class.java
) { _, _ -> CustomTypefaceSpan(Typeface.create(Typeface.DEFAULT, Typeface.ITALIC)) }
}
override fun configureParser(builder: Parser.Builder) { override fun configureParser(builder: Parser.Builder) {
/* Configuring the Markwon block formatting processor. /* Configuring the Markwon block formatting processor.
* Default settings are all Markdown blocks. Turn those off. * Default settings are all Markdown blocks. Turn those off.