From 83e8f1d1c8303ade70d35f4002032369b53b403b Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Wed, 25 Oct 2023 18:52:23 +0200 Subject: [PATCH] fix(YouTube - Disable suggested video end screen): Hide the view once possible Previously the patch tried to hide the screen when it was not visible to begin with. --- .../DisableSuggestedVideoEndScreenPatch.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/integrations/java/app/revanced/integrations/patches/DisableSuggestedVideoEndScreenPatch.java b/integrations/java/app/revanced/integrations/patches/DisableSuggestedVideoEndScreenPatch.java index 9f4358188..6a5c3ca32 100644 --- a/integrations/java/app/revanced/integrations/patches/DisableSuggestedVideoEndScreenPatch.java +++ b/integrations/java/app/revanced/integrations/patches/DisableSuggestedVideoEndScreenPatch.java @@ -1,13 +1,26 @@ package app.revanced.integrations.patches; +import android.annotation.SuppressLint; +import android.view.View; +import android.view.ViewGroup; import android.widget.ImageView; import app.revanced.integrations.settings.SettingsEnum; /** @noinspection unused*/ public final class DisableSuggestedVideoEndScreenPatch { - public static void closeEndScreen(ImageView imageView) { + @SuppressLint("StaticFieldLeak") + private static View lastView; + + public static void closeEndScreen(final ImageView imageView) { if (!SettingsEnum.DISABLE_SUGGESTED_VIDEO_END_SCREEN.getBoolean()) return; - imageView.performClick(); + // Get the view which can be listened to for layout changes. + final var parent = imageView.getParent().getParent(); + + // Prevent adding the listener multiple times. + if (lastView == parent) return; + + lastView = (ViewGroup)parent; + lastView.addOnLayoutChangeListener((view, i, i1, i2, i3, i4, i5, i6, i7) -> imageView.performClick()); } }