mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-26 19:36:08 +03:00
Timeline: Add spacing to quote
This commit is contained in:
parent
8c4dff4db9
commit
713f6f7a59
2 changed files with 56 additions and 5 deletions
|
@ -17,9 +17,11 @@
|
||||||
package im.vector.app.features.html
|
package im.vector.app.features.html
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.res.Resources
|
||||||
import android.text.Spannable
|
import android.text.Spannable
|
||||||
import androidx.core.text.toSpannable
|
import androidx.core.text.toSpannable
|
||||||
import im.vector.app.core.resources.ColorProvider
|
import im.vector.app.core.resources.ColorProvider
|
||||||
|
import im.vector.app.core.utils.DimensionConverter
|
||||||
import im.vector.app.features.settings.VectorPreferences
|
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
|
||||||
|
@ -53,11 +55,11 @@ class EventHtmlRenderer @Inject constructor(
|
||||||
.usePlugin(object : AbstractMarkwonPlugin() { // Markwon expects maths to be in a specific format: https://noties.io/Markwon/docs/v4/ext-latex
|
.usePlugin(object : AbstractMarkwonPlugin() { // Markwon expects maths to be in a specific format: https://noties.io/Markwon/docs/v4/ext-latex
|
||||||
override fun processMarkdown(markdown: String): String {
|
override fun processMarkdown(markdown: String): String {
|
||||||
return markdown
|
return markdown
|
||||||
.replace(Regex("""<span\s+data-mx-maths="([^"]*)">.*?</span>""")) {
|
.replace(Regex("""<span\s+data-mx-maths="([^"]*)">.*?</span>""")) { matchResult ->
|
||||||
matchResult -> "$$" + matchResult.groupValues[1] + "$$"
|
"$$" + matchResult.groupValues[1] + "$$"
|
||||||
}
|
}
|
||||||
.replace(Regex("""<div\s+data-mx-maths="([^"]*)">.*?</div>""")) {
|
.replace(Regex("""<div\s+data-mx-maths="([^"]*)">.*?</div>""")) { matchResult ->
|
||||||
matchResult -> "\n$$\n" + matchResult.groupValues[1] + "\n$$\n"
|
"\n$$\n" + matchResult.groupValues[1] + "\n$$\n"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -112,11 +114,12 @@ class EventHtmlRenderer @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MatrixHtmlPluginConfigure @Inject constructor(private val colorProvider: ColorProvider) : HtmlPlugin.HtmlConfigure {
|
class MatrixHtmlPluginConfigure @Inject constructor(private val colorProvider: ColorProvider, private val resources: Resources) : HtmlPlugin.HtmlConfigure {
|
||||||
|
|
||||||
override fun configureHtml(plugin: HtmlPlugin) {
|
override fun configureHtml(plugin: HtmlPlugin) {
|
||||||
plugin
|
plugin
|
||||||
.addHandler(FontTagHandler())
|
.addHandler(FontTagHandler())
|
||||||
|
.addHandler(ParagraphHandler(DimensionConverter(resources)))
|
||||||
.addHandler(MxReplyTagHandler())
|
.addHandler(MxReplyTagHandler())
|
||||||
.addHandler(SpanHandler(colorProvider))
|
.addHandler(SpanHandler(colorProvider))
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2019 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package im.vector.app.features.html
|
||||||
|
|
||||||
|
import android.content.res.Resources
|
||||||
|
import im.vector.app.core.utils.DimensionConverter
|
||||||
|
import io.noties.markwon.MarkwonVisitor
|
||||||
|
import io.noties.markwon.SpannableBuilder
|
||||||
|
import io.noties.markwon.html.HtmlTag
|
||||||
|
import io.noties.markwon.html.MarkwonHtmlRenderer
|
||||||
|
import io.noties.markwon.html.TagHandler
|
||||||
|
import me.gujun.android.span.style.VerticalPaddingSpan
|
||||||
|
import org.commonmark.node.BlockQuote
|
||||||
|
|
||||||
|
class ParagraphHandler(private val dimensionConverter: DimensionConverter) : TagHandler() {
|
||||||
|
|
||||||
|
override fun supportedTags() = listOf("p")
|
||||||
|
|
||||||
|
override fun handle(visitor: MarkwonVisitor, renderer: MarkwonHtmlRenderer, tag: HtmlTag) {
|
||||||
|
if (tag.isBlock) {
|
||||||
|
visitChildren(visitor, renderer, tag.asBlock)
|
||||||
|
}
|
||||||
|
val configuration = visitor.configuration()
|
||||||
|
val factory = configuration.spansFactory().get(BlockQuote::class.java)
|
||||||
|
if (factory != null) {
|
||||||
|
SpannableBuilder.setSpans(
|
||||||
|
visitor.builder(),
|
||||||
|
VerticalPaddingSpan(dimensionConverter.dpToPx(16), 0),
|
||||||
|
tag.start(),
|
||||||
|
tag.end()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue