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
This commit is contained in:
SpiritCroc 2020-12-19 19:51:56 +01:00
parent 002edb5e36
commit 5f30336542

View File

@ -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<MessageTextItem.Holder>() {
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<MessageTextItem.Holder>() {
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