diff --git a/CHANGES.md b/CHANGES.md index 38868ed822..123b99b6af 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,13 +2,14 @@ Changes in Element 1.0.14 (2020-XX-XX) =================================================== Features ✨: - - + - Enable url previews for notices (#2562) Improvements 🙌: - Bugfix 🐛: - Wait for all room members to be known before sending a message to a e2e room (#2518) + - Url previews sometimes attached to wrong message (#2561) Translations 🗣: - diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/media/UrlsExtractor.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/media/UrlsExtractor.kt index 9d374c3428..e531d6af9f 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/media/UrlsExtractor.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/media/UrlsExtractor.kt @@ -32,7 +32,11 @@ internal class UrlsExtractor @Inject constructor() { return event.takeIf { it.getClearType() == EventType.MESSAGE } ?.getClearContent() ?.toModel() - ?.takeIf { it.msgType == MessageType.MSGTYPE_TEXT || it.msgType == MessageType.MSGTYPE_EMOTE } + ?.takeIf { + it.msgType == MessageType.MSGTYPE_TEXT + || it.msgType == MessageType.MSGTYPE_NOTICE + || it.msgType == MessageType.MSGTYPE_EMOTE + } ?.body ?.let { urlRegex.findAll(it) } ?.map { it.value } diff --git a/vector/src/main/java/im/vector/app/core/platform/VectorBaseBottomSheetDialogFragment.kt b/vector/src/main/java/im/vector/app/core/platform/VectorBaseBottomSheetDialogFragment.kt index 95d42ecc30..d6d4d07500 100644 --- a/vector/src/main/java/im/vector/app/core/platform/VectorBaseBottomSheetDialogFragment.kt +++ b/vector/src/main/java/im/vector/app/core/platform/VectorBaseBottomSheetDialogFragment.kt @@ -114,6 +114,7 @@ abstract class VectorBaseBottomSheetDialogFragment : BottomShee @CallSuper override fun onDestroyView() { uiDisposables.clear() + _binding = null super.onDestroyView() } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/MessageItemFactory.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/MessageItemFactory.kt index 27696f5b28..a1e041b98f 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/MessageItemFactory.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/MessageItemFactory.kt @@ -512,6 +512,9 @@ class MessageItemFactory @Inject constructor( return MessageTextItem_() .leftGuideline(avatarSizeProvider.leftGuideline) + .previewUrlRetriever(callback?.getPreviewUrlRetriever()) + .imageContentRenderer(imageContentRenderer) + .previewUrlCallback(callback) .attributes(attributes) .message(message) .highlighted(highlight) 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) } }