From 2275bdd4fa5a4a389ddd4a09b8a2dba943a2bc4f Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 16 Dec 2021 20:14:21 +0200 Subject: [PATCH 1/4] Fix crash ImmutableModelException --- .../home/room/detail/timeline/tools/EventRenderingTools.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt index 1e8a81ff61..4abaa4fae4 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt @@ -16,6 +16,7 @@ package im.vector.app.features.home.room.detail.timeline.tools +import android.text.SpannableStringBuilder import android.text.style.ClickableSpan import android.view.MotionEvent import android.widget.TextView @@ -44,7 +45,7 @@ fun CharSequence.findPillsAndProcess(scope: CoroutineScope, processBlock: (PillI fun CharSequence.linkify(callback: TimelineEventController.UrlClickCallback?): CharSequence { val text = this.toString() - val spannable = toSpannable() + val spannable = SpannableStringBuilder(this) MatrixLinkify.addLinks(spannable, object : MatrixPermalinkSpan.Callback { override fun onUrlClicked(url: String) { callback?.onUrlClicked(url, text) From cabf12289bfa3cf99617bfa55fa8fbad41a44df2 Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 16 Dec 2021 20:39:21 +0200 Subject: [PATCH 2/4] Add changelog --- changelog.d/4742.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/4742.bugfix diff --git a/changelog.d/4742.bugfix b/changelog.d/4742.bugfix new file mode 100644 index 0000000000..ba4f32acf7 --- /dev/null +++ b/changelog.d/4742.bugfix @@ -0,0 +1 @@ +Fix app crash uppon long press on a reply event From b73bae452a0be27b29848dd087a53f1591c55d97 Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Fri, 17 Dec 2021 09:37:50 +0000 Subject: [PATCH 3/4] adding comment to explain SpannableStringBuilder usage --- .../home/room/detail/timeline/tools/EventRenderingTools.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt index 4abaa4fae4..530e8d6a93 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt @@ -44,7 +44,8 @@ fun CharSequence.findPillsAndProcess(scope: CoroutineScope, processBlock: (PillI } fun CharSequence.linkify(callback: TimelineEventController.UrlClickCallback?): CharSequence { - val text = this.toString() + val text = this.toString() + // SpannableStringBuilder is used to avoid Epoxy throwing ImmutableModelException val spannable = SpannableStringBuilder(this) MatrixLinkify.addLinks(spannable, object : MatrixPermalinkSpan.Callback { override fun onUrlClicked(url: String) { From ddbf8582dd323efeb9e7edb769268fcdee0b1744 Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Fri, 17 Dec 2021 10:46:03 +0000 Subject: [PATCH 4/4] removing trailing space --- .../home/room/detail/timeline/tools/EventRenderingTools.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt index 530e8d6a93..3226b56c24 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/tools/EventRenderingTools.kt @@ -44,7 +44,7 @@ fun CharSequence.findPillsAndProcess(scope: CoroutineScope, processBlock: (PillI } fun CharSequence.linkify(callback: TimelineEventController.UrlClickCallback?): CharSequence { - val text = this.toString() + val text = this.toString() // SpannableStringBuilder is used to avoid Epoxy throwing ImmutableModelException val spannable = SpannableStringBuilder(this) MatrixLinkify.addLinks(spannable, object : MatrixPermalinkSpan.Callback {