diff --git a/CHANGES.md b/CHANGES.md index 6cf6d306e9..f1f1d8dcaf 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,7 @@ Improvements 🙌: 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) Translations 🗣: - diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/media/GetPreviewUrlTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/media/GetPreviewUrlTask.kt index a218f3f93c..d85e471f1d 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/media/GetPreviewUrlTask.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/media/GetPreviewUrlTask.kt @@ -28,6 +28,7 @@ import org.matrix.android.sdk.internal.network.GlobalErrorReceiver import org.matrix.android.sdk.internal.network.executeRequest import org.matrix.android.sdk.internal.task.Task import org.matrix.android.sdk.internal.util.awaitTransaction +import org.matrix.android.sdk.internal.util.unescapeHtml import java.util.Date import javax.inject.Inject @@ -73,9 +74,9 @@ internal class DefaultGetPreviewUrlTask @Inject constructor( private fun JsonDict.toPreviewUrlData(url: String): PreviewUrlData { return PreviewUrlData( url = (get("og:url") as? String) ?: url, - siteName = get("og:site_name") as? String, - title = get("og:title") as? String, - description = get("og:description") as? String, + siteName = (get("og:site_name") as? String)?.unescapeHtml(), + title = (get("og:title") as? String)?.unescapeHtml(), + description = (get("og:description") as? String)?.unescapeHtml(), mxcUrl = get("og:image") as? String ) } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/util/Html.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/util/Html.kt new file mode 100644 index 0000000000..943b8428d5 --- /dev/null +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/util/Html.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2021 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.matrix.android.sdk.internal.util + +import androidx.core.text.HtmlCompat + +internal fun String.unescapeHtml(): String { + return HtmlCompat.fromHtml(this, HtmlCompat.FROM_HTML_MODE_LEGACY).toString() +}