From 5f303365424d0e826282bc2c75dcc36cdcbc84e5 Mon Sep 17 00:00:00 2001 From: SpiritCroc Date: Sat, 19 Dec 2020 19:51:56 +0100 Subject: [PATCH] Properly hide preview URLs for notices Notices don't have imageContentRenderer and previewUrlRetriever set. Accordingly, when recycling messages that previously had an URL preview, we do not want to keep that preview, but actually hide it, instead of returning early. Change-Id: I245d4bf5006ffc756fa35196351decb9cdabfb8a --- .../room/detail/timeline/item/MessageTextItem.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt index af8a3915c9..fec498a961 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt @@ -21,6 +21,7 @@ import android.text.TextUtils import android.text.method.MovementMethod import android.widget.LinearLayout import androidx.core.text.PrecomputedTextCompat +import androidx.core.view.isVisible import androidx.core.widget.TextViewCompat import com.airbnb.epoxy.EpoxyAttribute import com.airbnb.epoxy.EpoxyModelClass @@ -67,7 +68,12 @@ abstract class MessageTextItem : AbsMessageItem() { previewUrlViewUpdater.holder = holder previewUrlViewUpdater.previewUrlView = holder.previewUrlView previewUrlViewUpdater.imageContentRenderer = imageContentRenderer - previewUrlRetriever?.addListener(attributes.informationData.eventId, previewUrlViewUpdater) + val safePreviewUrlRetriever = previewUrlRetriever + if (safePreviewUrlRetriever == null) { + holder.previewUrlView.isVisible = false + } else { + safePreviewUrlRetriever.addListener(attributes.informationData.eventId, previewUrlViewUpdater) + } holder.previewUrlView.delegate = previewUrlCallback if (useBigFont) { @@ -125,7 +131,11 @@ abstract class MessageTextItem : AbsMessageItem() { var imageContentRenderer: ImageContentRenderer? = null override fun onStateUpdated(state: PreviewUrlUiState) { - val safeImageContentRenderer = imageContentRenderer ?: return + val safeImageContentRenderer = imageContentRenderer + if (safeImageContentRenderer == null) { + previewUrlView?.isVisible = false + return + } previewUrlView?.render(state, safeImageContentRenderer) // Don't reserve footer space in message view, but preview view | TODO