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
This commit is contained in:
SpiritCroc 2022-09-10 20:47:16 +02:00
parent e314922280
commit 4ce1137d8e

View File

@ -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)
}
}