From c3a00df0670a505583f2efb87a6c5b1127ae51a7 Mon Sep 17 00:00:00 2001
From: Thomas <tschneider.ac@gmail.com>
Date: Fri, 9 Sep 2022 15:19:37 +0200
Subject: [PATCH] Fix an issue with URLs

---
 .../android/helper/SpannableHelper.java        | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java b/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java
index 8ad9a884..1e1aa3e3 100644
--- a/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java
+++ b/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java
@@ -37,7 +37,6 @@ import android.text.Spanned;
 import android.text.TextPaint;
 import android.text.style.ClickableSpan;
 import android.text.style.URLSpan;
-import android.util.Patterns;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.Toast;
@@ -183,7 +182,7 @@ public class SpannableHelper {
 
     private static void linkify(Context context, SpannableStringBuilder content, HashMap<String, String> urlDetails) {
         //--- URLs ----
-        Matcher matcherLink = Patterns.WEB_URL.matcher(content);
+        Matcher matcherLink = urlPattern.matcher(content);
 
         int offSetTruncate = 0;
         while (matcherLink.find()) {
@@ -245,8 +244,9 @@ public class SpannableHelper {
                         AlertDialog alertDialog = dialogBuilder.create();
                         alertDialog.show();
                         String finalURl = url;
-                        if (urlDetails.containsValue(url)) {
-                            finalURl = Helper.getKeyByValue(urlDetails, url);
+                        String uniqueUrl = url.endsWith("…") ? url : url + "…";
+                        if (urlDetails.containsValue(uniqueUrl)) {
+                            finalURl = Helper.getKeyByValue(urlDetails, uniqueUrl);
                         }
                         String finalURl1 = finalURl;
                         popupLinksBinding.displayFullLink.setOnClickListener(v -> {
@@ -374,11 +374,13 @@ public class SpannableHelper {
                     public void onClick(@NonNull View textView) {
                         String finalURl = newURL;
                         String finalURl2 = url;
-                        if (urlDetails.containsValue(newURL + "…")) {
-                            finalURl = Helper.getKeyByValue(urlDetails, newURL + "…");
+                        String uniqueNewURL = newURL.endsWith("…") ? newURL : newURL + "…";
+                        if (urlDetails.containsValue(uniqueNewURL)) {
+                            finalURl = Helper.getKeyByValue(urlDetails, uniqueNewURL);
                         }
-                        if (urlDetails.containsValue(url + "…")) {
-                            finalURl2 = Helper.getKeyByValue(urlDetails, url + "…");
+                        String uniqueUrl = url.endsWith("…") ? url : url + "…";
+                        if (urlDetails.containsValue(uniqueUrl)) {
+                            finalURl2 = Helper.getKeyByValue(urlDetails, uniqueUrl);
                         }
                         textView.setTag(CLICKABLE_SPAN);
                         Pattern link = Pattern.compile("https?://([\\da-z.-]+\\.[a-z.]{2,10})/(@[\\w._-]*[0-9]*)(/[0-9]+)?$");