From 697c2aaac68976c985f0d838795b03f284e907e8 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sun, 17 Dec 2023 13:14:05 +0400 Subject: [PATCH] fix(YouTube - Return YouTube Dislike): Do not prefetch Shorts shelf items on app startup --- .../patches/ReturnYouTubeDislikePatch.java | 2 +- .../integrations/patches/VideoInformation.java | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java b/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java index 9a14366ea3..9c8caa455b 100644 --- a/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java @@ -570,7 +570,7 @@ public static void preloadVideoId(@NonNull String videoId, boolean isShortAndOpe return; } - final boolean videoIdIsShort = VideoInformation.lastVideoIdIsShort(); + final boolean videoIdIsShort = VideoInformation.lastPlayerResponseIsShort(); // Shorts shelf in home and subscription feed causes player response hook to be called, // and the 'is opening/playing' parameter will be false. // This hook will be called again when the Short is actually opened. diff --git a/app/src/main/java/app/revanced/integrations/patches/VideoInformation.java b/app/src/main/java/app/revanced/integrations/patches/VideoInformation.java index a6ba5649cd..5d35b283b5 100644 --- a/app/src/main/java/app/revanced/integrations/patches/VideoInformation.java +++ b/app/src/main/java/app/revanced/integrations/patches/VideoInformation.java @@ -32,6 +32,7 @@ public final class VideoInformation { @NonNull private static volatile String playerResponseVideoId = ""; + private static volatile boolean playerResponseVideoIdIsShort; private static volatile boolean videoIdIsShort; /** @@ -82,6 +83,7 @@ public static boolean playerParametersAreShort(@NonNull String parameters) { */ public static String newPlayerResponseSignature(@NonNull String signature, boolean isShortAndOpeningOrPlaying) { final boolean isShort = playerParametersAreShort(signature); + playerResponseVideoIdIsShort = isShort; if (!isShort || isShortAndOpeningOrPlaying) { if (videoIdIsShort != isShort) { videoIdIsShort = isShort; @@ -206,11 +208,17 @@ public static String getPlayerResponseVideoId() { return playerResponseVideoId; } + /** + * @return If the last player response video id was a Short. + * Includes Shorts shelf items appearing in the feed that are not opened. + * @see #lastVideoIdIsShort() + */ + public static boolean lastPlayerResponseIsShort() { + return playerResponseVideoIdIsShort; + } + /** * @return If the last player response video id _that was opened_ was a Short. - *

- * Note: This value returned may not match the status of {@link #getPlayerResponseVideoId()} - * since that includes player responses for videos not opened. */ public static boolean lastVideoIdIsShort() { return videoIdIsShort;