Loading app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java +108 −105 Original line number Diff line number Diff line Loading @@ -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]+)?$"); Loading Loading @@ -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; Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +3 −1 Original line number Diff line number Diff line Loading @@ -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); Loading Loading
app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java +108 −105 Original line number Diff line number Diff line Loading @@ -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]+)?$"); Loading Loading @@ -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; Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +3 −1 Original line number Diff line number Diff line Loading @@ -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); Loading