From 24f1262005b51963deb9c50746d42ab0170b5ef9 Mon Sep 17 00:00:00 2001 From: Valere Date: Fri, 1 Nov 2019 12:34:22 +0100 Subject: [PATCH] Merge refactoring --- .../riotx/features/html/EventHtmlRenderer.kt | 1 + .../vector/riotx/features/html/SpanHandler.kt | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 vector/src/main/java/im/vector/riotx/features/html/SpanHandler.kt diff --git a/vector/src/main/java/im/vector/riotx/features/html/EventHtmlRenderer.kt b/vector/src/main/java/im/vector/riotx/features/html/EventHtmlRenderer.kt index dc9e21e440..136d667c44 100644 --- a/vector/src/main/java/im/vector/riotx/features/html/EventHtmlRenderer.kt +++ b/vector/src/main/java/im/vector/riotx/features/html/EventHtmlRenderer.kt @@ -58,5 +58,6 @@ class MatrixHtmlPluginConfigure @Inject constructor(private val context: Context .addHandler(FontTagHandler()) .addHandler(MxLinkTagHandler(GlideApp.with(context), context, avatarRenderer, session)) .addHandler(MxReplyTagHandler()) + .addHandler(SpanHandler(context)) } } diff --git a/vector/src/main/java/im/vector/riotx/features/html/SpanHandler.kt b/vector/src/main/java/im/vector/riotx/features/html/SpanHandler.kt new file mode 100644 index 0000000000..33d8f87271 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/html/SpanHandler.kt @@ -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.riotx.features.html + +import android.content.Context +import im.vector.riotx.R +import im.vector.riotx.features.themes.ThemeUtils +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 + +class SpanHandler(context: Context) : TagHandler() { + + override fun supportedTags() = listOf("span") + + private val spoilerBgColor: Int = ThemeUtils.getColor(context, R.attr.vctr_markdown_block_background_color) + + private val textColor: Int = ThemeUtils.getColor(context, R.attr.riotx_text_primary) + + override fun handle(visitor: MarkwonVisitor, renderer: MarkwonHtmlRenderer, tag: HtmlTag) { + val mxSpoiler = tag.attributes()["data-mx-spoiler"] + if (mxSpoiler != null) { + SpannableBuilder.setSpans( + visitor.builder(), + SpoilerSpan(spoilerBgColor, textColor), + tag.start(), + tag.end() + ) + } else { + // default thing? + } + } +}