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 7bbcb8b8..cd5ef761 100644 --- a/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/ReturnYouTubeDislikePatch.java @@ -404,11 +404,14 @@ public class ReturnYouTubeDislikePatch { /** * Injection point. Uses 'playback response' video id hook to preload RYD. */ - public static void preloadVideoId(@NonNull String videoId) { - if (!SettingsEnum.RYD_ENABLED.getBoolean()) { + public static void preloadVideoId(@NonNull String videoId, boolean videoIsOpeningOrPlaying) { + // 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. + if (!videoIsOpeningOrPlaying || !SettingsEnum.RYD_ENABLED.getBoolean()) { return; } - if (!SettingsEnum.RYD_SHORTS.getBoolean() && PlayerType.getCurrent().isNoneOrHidden()) { + if (!SettingsEnum.RYD_SHORTS.getBoolean() && PlayerType.getCurrent().isNoneHiddenOrSlidingMinimized()) { return; } if (videoId.equals(lastPrefetchedVideoId)) { @@ -471,12 +474,13 @@ public class ReturnYouTubeDislikePatch { if (videoIdIsSame(currentVideoData, videoId)) { return; } - currentVideoData = ReturnYouTubeDislike.getFetchForVideoId(videoId); + ReturnYouTubeDislike data = ReturnYouTubeDislike.getFetchForVideoId(videoId); // Pre-emptively set the data to short status. // Required to prevent Shorts data from being used on a minimized video in incognito mode. if (isNoneHiddenOrSlidingMinimized) { - currentVideoData.setVideoIdIsShort(true); + data.setVideoIdIsShort(true); } + currentVideoData = data; } LogHelper.printDebug(() -> "New video id: " + videoId + " playerType: " + currentPlayerType 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 ee9034b0..9d181905 100644 --- a/app/src/main/java/app/revanced/integrations/patches/VideoInformation.java +++ b/app/src/main/java/app/revanced/integrations/patches/VideoInformation.java @@ -69,7 +69,7 @@ public final class VideoInformation { * * @param videoId The id of the last video loaded. */ - public static void setPlayerResponseVideoId(@NonNull String videoId) { + public static void setPlayerResponseVideoId(@NonNull String videoId, boolean videoIsOpeningOrPlaying) { if (!playerResponseVideoId.equals(videoId)) { LogHelper.printDebug(() -> "New player response video id: " + videoId); playerResponseVideoId = videoId; diff --git a/app/src/main/java/app/revanced/integrations/patches/components/ReturnYouTubeDislikeFilterPatch.java b/app/src/main/java/app/revanced/integrations/patches/components/ReturnYouTubeDislikeFilterPatch.java index b52fd486..b1ff2d2e 100644 --- a/app/src/main/java/app/revanced/integrations/patches/components/ReturnYouTubeDislikeFilterPatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/components/ReturnYouTubeDislikeFilterPatch.java @@ -53,9 +53,9 @@ public final class ReturnYouTubeDislikeFilterPatch extends Filter { /** * Injection point. */ - public static void newPlayerResponseVideoId(String videoId) { + public static void newPlayerResponseVideoId(String videoId, boolean videoIsOpeningOrPlaying) { try { - if (!SettingsEnum.RYD_SHORTS.getBoolean()) { + if (!videoIsOpeningOrPlaying || !SettingsEnum.RYD_SHORTS.getBoolean()) { return; } synchronized (lastVideoIds) {