From a120a91cda56e8976ea5a7af772bfc72f2f0c4bf Mon Sep 17 00:00:00 2001 From: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> Date: Thu, 11 Jun 2026 23:02:09 -0400 Subject: [PATCH] Fix imgur link handling. --- .../activities/LinkResolverActivity.java | 49 ++++++++++++++----- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java index df2c9cb1..67a1f054 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java @@ -325,22 +325,36 @@ public class LinkResolverActivity extends AppCompatActivity { deepLinkError(uri); } } else if (authority.contains("imgur.com")) { - if (path.matches(IMGUR_GALLERY_PATTERN)) { - Intent intent = new Intent(this, ViewImgurMediaActivity.class); - intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_TYPE, ViewImgurMediaActivity.IMGUR_TYPE_GALLERY); - intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_ID, segments.get(1)); - startActivity(intent); - } else if (path.matches(IMGUR_ALBUM_PATTERN)) { - Intent intent = new Intent(this, ViewImgurMediaActivity.class); - intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_TYPE, ViewImgurMediaActivity.IMGUR_TYPE_ALBUM); - intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_ID, segments.get(1)); - startActivity(intent); - } else if (path.matches(IMGUR_IMAGE_PATTERN)) { + if (segments.size() == 1) { Intent intent = new Intent(this, ViewImgurMediaActivity.class); intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_TYPE, ViewImgurMediaActivity.IMGUR_TYPE_IMAGE); - intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_ID, path.substring(1)); + intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_ID, getImgurId(segments.get(0))); startActivity(intent); - } else if (path.endsWith("gifv") || path.endsWith("mp4")) { + + finish(); + return; + } else if (segments.size() == 2) { + if (segments.get(0).equalsIgnoreCase("gallery")) { + Intent intent = new Intent(this, ViewImgurMediaActivity.class); + intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_TYPE, ViewImgurMediaActivity.IMGUR_TYPE_GALLERY); + intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_ID, getImgurId(segments.get(1))); + startActivity(intent); + + finish(); + return; + } else if (segments.get(0).equalsIgnoreCase("album") + || segments.get(0).equalsIgnoreCase("a")) { + Intent intent = new Intent(this, ViewImgurMediaActivity.class); + intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_TYPE, ViewImgurMediaActivity.IMGUR_TYPE_ALBUM); + intent.putExtra(ViewImgurMediaActivity.EXTRA_IMGUR_ID, getImgurId(segments.get(1))); + startActivity(intent); + + finish(); + return; + } + } + + if (path.endsWith("gifv") || path.endsWith("mp4")) { String url = uri.toString(); if (path.endsWith("gifv")) { url = url.substring(0, url.length() - 5) + ".mp4"; @@ -383,6 +397,15 @@ public class LinkResolverActivity extends AppCompatActivity { finish(); } + private String getImgurId(String pathSegment) { + int dashIndex = pathSegment.lastIndexOf('-'); + if (dashIndex < 0 || dashIndex >= pathSegment.length() - 1) { + return pathSegment; + } + + return pathSegment.substring(dashIndex + 1); + } + private void deepLinkError(Uri uri) { PackageManager pm = getPackageManager();