diff --git a/app/src/main/java/org/wikipedia/notifications/NotificationActivity.kt b/app/src/main/java/org/wikipedia/notifications/NotificationActivity.kt index 4dd5bcfb766..745558e16f8 100644 --- a/app/src/main/java/org/wikipedia/notifications/NotificationActivity.kt +++ b/app/src/main/java/org/wikipedia/notifications/NotificationActivity.kt @@ -484,7 +484,7 @@ class NotificationActivity : BaseActivity() { val n = container.notification!! markReadItems(listOf(container), markUnread = false, fromUndoOrClick = true, position = itemPosition) n.contents?.links?.getPrimary()?.let { link -> - val url = link.url + val url = link.encodedUrl if (url.isNotEmpty()) { linkHandler.wikiSite = WikiSite(url) linkHandler.onUrlClick(url, null, "") diff --git a/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.kt b/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.kt index de1f500ac5b..db08488a217 100644 --- a/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.kt +++ b/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.kt @@ -149,7 +149,7 @@ object NotificationPresenter { } private fun addActionForDiffLink(context: Context, builder: NotificationCompat.Builder, link: Notification.Link, n: Notification) { - val uri = Uri.parse(link.url) + val uri = Uri.parse(link.encodedUrl) val title = uri.getQueryParameter("title") val oldRev = uri.getQueryParameter("prev").orEmpty().toLongOrNull() ?: -1 val newRev = uri.getQueryParameter("diff").orEmpty().toLongOrNull() ?: -1 diff --git a/app/src/main/java/org/wikipedia/notifications/db/Notification.kt b/app/src/main/java/org/wikipedia/notifications/db/Notification.kt index b9f54f59421..fd5e9a86fa4 100644 --- a/app/src/main/java/org/wikipedia/notifications/db/Notification.kt +++ b/app/src/main/java/org/wikipedia/notifications/db/Notification.kt @@ -84,12 +84,18 @@ class Notification(var id: Long = 0, private val description: String = "" var url: String = "" private set + var encodedUrl: String = "" + private set val label: String = "" val tooltip: String = "" // The icon could be a string or `false`. private val icon: JsonElement? = null init { + encodedUrl = url + if (encodedUrl.startsWith("//")) { + encodedUrl = WikiSite.DEFAULT_SCHEME + "://" + encodedUrl.substring(2) + } url = UriUtil.decodeURL(url) if (url.startsWith("//")) { url = url.replaceFirst("//", WikiSite.DEFAULT_SCHEME + "://") diff --git a/app/src/main/java/org/wikipedia/views/NotificationActionsOverflowView.kt b/app/src/main/java/org/wikipedia/views/NotificationActionsOverflowView.kt index aae0c1ecf99..f625c5575e4 100644 --- a/app/src/main/java/org/wikipedia/views/NotificationActionsOverflowView.kt +++ b/app/src/main/java/org/wikipedia/views/NotificationActionsOverflowView.kt @@ -114,7 +114,7 @@ class NotificationActionsOverflowView(context: Context) : FrameLayout(context) { private var actionClickListener = OnClickListener { val link = it.tag as Notification.Link - val url = link.url + val url = link.encodedUrl val notification = container.notification if (url.isNotEmpty() && notification != null) { linkHandler.wikiSite = WikiSite(url)