From a67c8b36b16b24210e26f10f70122f86023adf9c Mon Sep 17 00:00:00 2001 From: FineFindus Date: Sat, 6 Jul 2024 13:35:14 +0200 Subject: [PATCH] refactor(StatusDisplayItem/quote): use regex to find last URL --- .../android/ui/displayitems/StatusDisplayItem.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java index 38720e5c0..804c9cfce 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java @@ -87,7 +87,7 @@ public abstract class StatusDisplayItem{ private final static Pattern QUOTE_MENTION_PATTERN=Pattern.compile("(?:

)?\\s?(?:RE:\\s?)?]*>https:\\/\\/<\\/span>[^<]+<\\/span>[^<]+<\\/span><\\/a>(?:<\\/p>)?$"); - private final static Pattern QUOTE_PATTERN=Pattern.compile("[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)"); + private final static Pattern QUOTE_PATTERN=Pattern.compile("[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$"); public void setAncestryInfo( boolean hasDescendantNeighbor, @@ -422,11 +422,9 @@ public abstract class StatusDisplayItem{ private static void tryAddNonOfficialQuote(Status status, BaseStatusListFragment fragment, String accountID) { Matcher matcher=QUOTE_PATTERN.matcher(status.getStrippedText()); - String quoteURL=null; - while (matcher.find()) { - quoteURL=matcher.group(0); - } - quoteURL="https://"+quoteURL; + if(!matcher.find()) + return; + String quoteURL="https://"+matcher.group(); if (UiUtils.looksLikeFediverseUrl(quoteURL)) { new GetSearchResults(quoteURL, GetSearchResults.Type.STATUSES, true, null, 0, 0).setCallback(new Callback<>(){ @@ -444,7 +442,7 @@ public abstract class StatusDisplayItem{ @Override public void onError(ErrorResponse error){ - Log.w("StatusDisplayItem", "onError: failed to find quote status" +error); + Log.w("StatusDisplayItem", "onError: failed to find quote status with URL: " + quoteURL + " " + error); } }).exec(accountID); }