Commit 65b9015d authored by Thomas's avatar Thomas
Browse files

Fix issue #931 - Click on card does not open Mastodon posts inside the app

parent 24303915
Loading
Loading
Loading
Loading
+108 −105
Original line number Diff line number Diff line
@@ -598,6 +598,21 @@ public class SpannableHelper {
            public void onClick(@NonNull View textView) {

                textView.setTag(CLICKABLE_SPAN);
                linkClickAction(context, finalUrl);
            }

            @Override
            public void updateDrawState(@NonNull TextPaint ds) {
                super.updateDrawState(ds);
                ds.setUnderlineText(false);
                if (linkColor != -1) {
                    ds.setColor(linkColor);
                }
            }
        }, start, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    }

    public static void linkClickAction(Context context, String finalUrl) {
        Pattern link = Pattern.compile("https?://([\\da-z.-]+\\.[a-z.]{2,10})/(@[\\w._-]*[0-9]*)(/[0-9]+)?$");
        Matcher matcherLink = link.matcher(finalUrl);
        Pattern linkLong = Pattern.compile("https?://([\\da-z.-]+\\.[a-z.]{2,10})/(@[\\w_.-]+@[a-zA-Z0-9][a-zA-Z0-9.-]{1,61}[a-zA-Z0-9](?:\\.[a-zA-Z]{2,})+)(/[0-9]+)?$");
@@ -705,18 +720,6 @@ public class SpannableHelper {
        }
    }

            @Override
            public void updateDrawState(@NonNull TextPaint ds) {
                super.updateDrawState(ds);
                ds.setUnderlineText(false);
                if (linkColor != -1) {
                    ds.setColor(linkColor);
                }
            }
        }, start, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    }


    private static void emails(Context context, Spannable content) {
        // --- For all patterns defined in Helper class ---
        Pattern pattern = Helper.emailPattern;
+3 −1
Original line number Diff line number Diff line
@@ -844,7 +844,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
            holder.binding.cardTitle.setText(statusToDeal.card.title);
            holder.binding.cardDescription.setText(statusToDeal.card.description);
            holder.binding.cardUrl.setText(Helper.transformURL(context, statusToDeal.card.url));
            holder.binding.card.setOnClickListener(v -> Helper.openBrowser(context, Helper.transformURL(context, statusToDeal.card.url)));
            holder.binding.card.setOnClickListener(v -> {
                SpannableHelper.linkClickAction(context, statusToDeal.card.url);
            });
            holder.binding.card.setVisibility(View.VISIBLE);
        } else {
            holder.binding.card.setVisibility(View.GONE);