diff --git a/CHANGES.md b/CHANGES.md index 0fb7d72c13..f5ee541793 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,7 +8,7 @@ Improvements 🙌: - Bugfix 🐛: - - + - Url previews sometimes attached to wrong message (#2561) Translations 🗣: - 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 66d9808d2b..659a3d5460 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 @@ -19,6 +19,7 @@ package im.vector.app.features.home.room.detail.timeline.item import android.text.method.MovementMethod import androidx.appcompat.widget.AppCompatTextView 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 @@ -60,7 +61,12 @@ abstract class MessageTextItem : AbsMessageItem() { // Preview URL 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) { @@ -106,7 +112,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) } }