From 2d73b8b29b14ab9ce20fa33ea4ebfa66984c5903 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Wed, 22 Feb 2023 05:55:46 +0100 Subject: [PATCH] feat(youtube/open-links-directly): skip every redirect url Signed-off-by: oSumAtrIX --- .../patches/OpenLinksDirectlyPatch.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/app/revanced/integrations/patches/OpenLinksDirectlyPatch.java b/app/src/main/java/app/revanced/integrations/patches/OpenLinksDirectlyPatch.java index fb18f7d0..fe53ac20 100644 --- a/app/src/main/java/app/revanced/integrations/patches/OpenLinksDirectlyPatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/OpenLinksDirectlyPatch.java @@ -1,18 +1,25 @@ package app.revanced.integrations.patches; -import java.net.URLDecoder; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - +import android.net.Uri; import app.revanced.integrations.settings.SettingsEnum; public class OpenLinksDirectlyPatch { + private static final String YOUTUBE_REDIRECT_PATH = "redirect"; - public static String parseRedirectUri(String uri) { + /** + * Parses the given YouTube redirect uri by extracting the redirect query. + * + * @param uri The YouTube redirect uri. + * @return The redirect query. + */ + public static Uri parseRedirectUri(String uri) { if (SettingsEnum.OPEN_LINKS_DIRECTLY.getBoolean()) { - Matcher matcher = Pattern.compile("&q=(http.+?)&v=").matcher(uri); - return matcher.find() ? URLDecoder.decode(matcher.group(1)) : uri; + final var parsed = Uri.parse(uri); + + if (parsed.getPath().equals(YOUTUBE_REDIRECT_PATH)) + Uri.parse(parsed.getQueryParameter("q")); } - return uri; + + return Uri.parse(uri); } }