From 0059fdf174efa0f9ceced3fb7ec30ef1c7d4277c Mon Sep 17 00:00:00 2001 From: aqulu Date: Sun, 20 Dec 2020 13:55:32 +0900 Subject: [PATCH 1/4] Release VectorBaseBottomSheetDialogFragment bindings when view destroyed Signed-off-by: aqulu --- .../app/core/platform/VectorBaseBottomSheetDialogFragment.kt | 1 + 1 file changed, 1 insertion(+) 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() } From 9fcf7263b567ae9b7489d33bbb5e021c2087789e Mon Sep 17 00:00:00 2001 From: SpiritCroc Date: Sat, 19 Dec 2020 19:51:56 +0100 Subject: [PATCH 2/4] Properly hide preview URLs for messages that don't support previews Notices and formatted messages 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 (without rendering any update). --- CHANGES.md | 2 +- .../room/detail/timeline/item/MessageTextItem.kt | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) 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) } } From d5e76c515e727b1d4a80e1330935f96aabc378cd Mon Sep 17 00:00:00 2001 From: SpiritCroc Date: Sat, 19 Dec 2020 19:57:49 +0100 Subject: [PATCH 3/4] Enable URL-previews for notices Desktop has those too. --- CHANGES.md | 2 +- .../android/sdk/internal/session/media/UrlsExtractor.kt | 4 +++- .../home/room/detail/timeline/factory/MessageItemFactory.kt | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 0fb7d72c13..d1d2712a12 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,7 +2,7 @@ Changes in Element 1.0.14 (2020-XX-XX) =================================================== Features ✨: - - + - Enable url previews for notices (#2562) Improvements 🙌: - 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..87b9ab349f 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,9 @@ 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/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) From 9da3eec64f4b59a10d8f8501e70ee0a40afeac6f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Sun, 20 Dec 2020 20:28:40 +0100 Subject: [PATCH 4/4] Fix small formatting issue --- .../android/sdk/internal/session/media/UrlsExtractor.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 87b9ab349f..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,9 +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_NOTICE || - 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 }