From 4ce1137d8e028f8b0997d910fc94d4796f44c4fa Mon Sep 17 00:00:00 2001 From: SpiritCroc Date: Sat, 10 Sep 2022 20:47:16 +0200 Subject: [PATCH] Fix pills appearing twice for nested inline images Do not add pills if we have a nested image span. Fixes https://github.com/SchildiChat/SchildiChat-android/issues/148 Change-Id: I1d070502cdd493be8d07ac43b23cd8981aa0dd2e --- .../java/im/vector/app/features/html/PillsPostProcessor.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vector/src/main/java/im/vector/app/features/html/PillsPostProcessor.kt b/vector/src/main/java/im/vector/app/features/html/PillsPostProcessor.kt index 5f20b7278e..bb0f29af7e 100644 --- a/vector/src/main/java/im/vector/app/features/html/PillsPostProcessor.kt +++ b/vector/src/main/java/im/vector/app/features/html/PillsPostProcessor.kt @@ -26,6 +26,7 @@ import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.glide.GlideApp import im.vector.app.features.home.AvatarRenderer import io.noties.markwon.core.spans.LinkSpan +import io.noties.markwon.image.AsyncDrawableSpan import org.matrix.android.sdk.api.session.getRoomSummary import org.matrix.android.sdk.api.session.getUser import org.matrix.android.sdk.api.session.permalinks.PermalinkData @@ -83,6 +84,11 @@ class PillsPostProcessor @AssistedInject constructor( val pillSpan = linkSpan.createPillSpan(roomId) ?: return@forEach val startSpan = renderedText.getSpanStart(linkSpan) val endSpan = renderedText.getSpanEnd(linkSpan) + // GlideImagesPlugin causes duplicated pills if we have a nested image: https://github.com/SchildiChat/SchildiChat-android/issues/148 + // -> do not add pills if we have a nested image + if (renderedText.getSpans(startSpan, endSpan, AsyncDrawableSpan::class.java).isNotEmpty()) { + return@forEach + } addPillSpan(renderedText, pillSpan, startSpan, endSpan) } }