From 0d4d10ce274303942288a80e2d8d7fa623d2b52f Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 1 Jun 2022 07:47:53 +0200 Subject: [PATCH] Insert auto link --- .../email/FragmentDialogInsertLink.java | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java index 531c099686..2ffaccda41 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java @@ -234,17 +234,36 @@ public class FragmentDialogInsertLink extends FragmentDialogBase { int start = etBody.getSelectionStart(); int end = etBody.getSelectionEnd(); + Editable edit = etBody.getText(); + + if (start >= 0 && start == end && start < edit.length()) { + int s = start; + int e = end; + while (s - 1 >= 0 && !Character.isWhitespace(edit.charAt(s - 1))) + s--; + while (e < edit.length() && !Character.isWhitespace(edit.charAt(e))) + e++; + if (s < e) { + start = s; + end = e; + Uri u = Uri.parse(edit.subSequence(start, end).toString()); + if (u.getScheme() != null) + uri = u; + } + } - URLSpan[] spans = etBody.getText().getSpans(start, start, URLSpan.class); - if (spans != null && spans.length > 0) { - start = etBody.getText().getSpanStart(spans[0]); - end = etBody.getText().getSpanEnd(spans[0]); + if (uri == null) { + URLSpan[] spans = edit.getSpans(start, start, URLSpan.class); + if (spans != null && spans.length > 0) { + start = edit.getSpanStart(spans[0]); + end = edit.getSpanEnd(spans[0]); - String url = spans[0].getURL(); - if (url != null) { - uri = Uri.parse(url); - if (uri.getScheme() == null) - uri = null; + String url = spans[0].getURL(); + if (url != null) { + uri = Uri.parse(url); + if (uri.getScheme() == null) + uri = null; + } } } @@ -273,7 +292,7 @@ public class FragmentDialogInsertLink extends FragmentDialogBase { */ } - String title = (start >= 0 && end > start ? etBody.getText().subSequence(start, end).toString() : ""); + String title = (start >= 0 && end > start ? edit.subSequence(start, end).toString() : ""); Bundle args = new Bundle(); args.putParcelable("uri", uri);