From 05a73fcfe2e303ea1dbf95364f40baa59477ddca Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 8 Apr 2022 13:25:26 +0200 Subject: [PATCH] Guess scheme for outbound autolink --- .../java/eu/faircode/email/HtmlHelper.java | 18 ++++++++++++++++-- .../java/eu/faircode/email/MessageHelper.java | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index d02b47cc33..345042448c 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -1415,6 +1415,10 @@ public class HtmlHelper { } static void autoLink(Document document) { + autoLink(document, false); + } + + static void autoLink(Document document, boolean outbound) { // https://en.wikipedia.org/wiki/List_of_URI_schemes // xmpp:[]@[:]/[][?] // geo:,[,][;u=] @@ -1500,8 +1504,18 @@ public class HtmlHelper { Element a = document.createElement("a"); if (BuildConfig.DEBUG && GPA_PATTERN.matcher(group).matches()) a.attr("href", BuildConfig.GPA_URI + group); - else - a.attr("href", (email ? "mailto:" : "") + group); + else { + String url = (email ? "mailto:" : "") + group; + try { + Uri uri = Uri.parse(url); + if (outbound) + uri = UriHelper.guessScheme(uri); + a.attr("href", uri.toString()); + } catch (Throwable ex) { + Log.e(ex); + a.attr("href", url); + } + } a.text(group); span.appendChild(a); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 2601c4dda5..ea7ec5b806 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -926,7 +926,7 @@ public class MessageHelper { if (identity != null && send) { if (auto_link) { HtmlHelper.guessSchemes(document); - HtmlHelper.autoLink(document); + HtmlHelper.autoLink(document, true); } if (!TextUtils.isEmpty(compose_font)) {