diff --git a/CHANGES.md b/CHANGES.md index 09ee32a127..63672ff840 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,7 @@ Bugfix 🐛: - Duplicate thumbs | Mobile reactions for 👍 and 👎 are not the same as web (#2776) - Join room by alias other federation error (#2778) - HTML unescaping for URL preview (#2766) + - URL preview on reply fallback (#2756) Translations 🗣: - diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/ContentUtils.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/ContentUtils.kt index c82a929ee0..1a00b85ff4 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/ContentUtils.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/ContentUtils.kt @@ -20,7 +20,7 @@ object ContentUtils { val lines = repliedBody.lines() var wellFormed = repliedBody.startsWith(">") var endOfPreviousFound = false - val usefullines = ArrayList() + val usefulLines = ArrayList() lines.forEach { if (it == "") { endOfPreviousFound = true @@ -29,10 +29,10 @@ object ContentUtils { if (!endOfPreviousFound) { wellFormed = wellFormed && it.startsWith(">") } else { - usefullines.add(it) + usefulLines.add(it) } } - return usefullines.joinToString("\n").takeIf { wellFormed } ?: repliedBody + return usefulLines.joinToString("\n").takeIf { wellFormed } ?: repliedBody } fun extractUsefulTextFromHtmlReply(repliedBody: String): String { 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 6137b4152c..83a5a724cc 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 @@ -21,6 +21,7 @@ import org.matrix.android.sdk.api.session.events.model.EventType import org.matrix.android.sdk.api.session.room.model.message.MessageType import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent import org.matrix.android.sdk.api.session.room.timeline.getLastMessageContent +import org.matrix.android.sdk.api.util.ContentUtils import javax.inject.Inject internal class UrlsExtractor @Inject constructor() { @@ -35,7 +36,14 @@ internal class UrlsExtractor @Inject constructor() { || it.msgType == MessageType.MSGTYPE_NOTICE || it.msgType == MessageType.MSGTYPE_EMOTE } - ?.body + ?.let { messageContent -> + if (messageContent.relatesTo?.inReplyTo?.eventId != null) { + // This is a reply, strip the reply fallback + ContentUtils.extractUsefulTextFromReply(messageContent.body) + } else { + messageContent.body + } + } ?.let { urlRegex.findAll(it) } ?.map { it.value } ?.filter { it.startsWith("https://") || it.startsWith("http://") }