From 84e65b5e06778e16e2e3b03982f85dc4b67d44e0 Mon Sep 17 00:00:00 2001 From: nullptr <107796137+johnconner122@users.noreply.github.com> Date: Sun, 31 Mar 2024 17:33:39 +0500 Subject: [PATCH 1/5] fix: add `NavigationBarHook` as dependency --- .../layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt index 91948d7f26..7864a568be 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt @@ -8,12 +8,16 @@ import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.youtube.layout.hide.loadmorebutton.fingerprints.HideLoadMoreButtonFingerprint +import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Patch( name = "Hide \'Load more\' button", description = "Adds an option to hide the button under videos that loads similar videos.", - dependencies = [HideLoadMoreButtonResourcePatch::class], + dependencies = [ + HideLoadMoreButtonResourcePatch::class, + NavigationBarHookPatch::class + ], compatiblePackages = [ CompatiblePackage( "com.google.android.youtube", From 57abb1de75927175892b19adfbd60eb7e83cd1c7 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 4 Apr 2024 00:51:28 +0400 Subject: [PATCH 2/5] fix: Add PlayerType as dependent (needed to correctly detect the search bar) --- .../youtube/layout/hide/general/HideLayoutComponentsPatch.kt | 4 +--- .../youtube/layout/hide/shorts/HideShortsComponentsPatch.kt | 4 +--- .../youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt | 4 +--- .../patches/youtube/misc/navigation/NavigationBarHookPatch.kt | 2 ++ 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt index 5a7428d7ed..c9384dd217 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt @@ -22,7 +22,6 @@ import app.revanced.patches.youtube.layout.hide.general.fingerprints.PlayerOverl import app.revanced.patches.youtube.layout.hide.general.fingerprints.ShowWatermarkFingerprint import app.revanced.patches.youtube.misc.litho.filter.LithoFilterPatch import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch -import app.revanced.patches.youtube.misc.playertype.PlayerTypeHookPatch import app.revanced.patches.youtube.misc.settings.SettingsPatch import app.revanced.util.resultOrThrow import com.android.tools.smali.dexlib2.Opcode @@ -36,8 +35,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction LithoFilterPatch::class, SettingsPatch::class, AddResourcesPatch::class, - NavigationBarHookPatch::class, - PlayerTypeHookPatch::class // Used by Keyword Content filter. + NavigationBarHookPatch::class // Used by Keyword Content filter. ], compatiblePackages = [ CompatiblePackage( diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt index e65eced6ce..d9db24b9de 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt @@ -15,7 +15,6 @@ import app.revanced.patches.youtube.layout.hide.shorts.fingerprints.* import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch import app.revanced.patches.youtube.misc.litho.filter.LithoFilterPatch import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch -import app.revanced.patches.youtube.misc.playertype.PlayerTypeHookPatch import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction @@ -28,8 +27,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction LithoFilterPatch::class, HideShortsComponentsResourcePatch::class, ResourceMappingPatch::class, - NavigationBarHookPatch::class, - PlayerTypeHookPatch::class + NavigationBarHookPatch::class ], compatiblePackages = [ CompatiblePackage( diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt index 2f624435b1..c7bd24ec8b 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt @@ -23,7 +23,6 @@ import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.reques import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnSucceededFingerprint import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch -import app.revanced.patches.youtube.misc.playertype.PlayerTypeHookPatch import app.revanced.patches.youtube.misc.settings.SettingsPatch import app.revanced.util.resultOrThrow import com.android.tools.smali.dexlib2.AccessFlags @@ -40,8 +39,7 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod IntegrationsPatch::class, SettingsPatch::class, AddResourcesPatch::class, - NavigationBarHookPatch::class, - PlayerTypeHookPatch::class + NavigationBarHookPatch::class ], compatiblePackages = [ CompatiblePackage( diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/NavigationBarHookPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/NavigationBarHookPatch.kt index 5b19cdc0a6..514ec9298a 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/NavigationBarHookPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/NavigationBarHookPatch.kt @@ -10,6 +10,7 @@ import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch import app.revanced.patches.youtube.misc.navigation.fingerprints.* +import app.revanced.patches.youtube.misc.playertype.PlayerTypeHookPatch import app.revanced.util.getReference import app.revanced.util.indexOfFirstInstruction import app.revanced.util.resultOrThrow @@ -25,6 +26,7 @@ import com.android.tools.smali.dexlib2.util.MethodUtil dependencies = [ IntegrationsPatch::class, NavigationBarHookResourcePatch::class, + PlayerTypeHookPatch::class // Required to detect the search bar in all situations. ], ) @Suppress("unused") From 20e75bc2bd0de487ee7e6b870ced08d1ca2afa8c Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 4 Apr 2024 17:36:28 +0400 Subject: [PATCH 3/5] refactor: Rename patch and include with `Hide layout components` --- .../hide/general/HideLayoutComponentsPatch.kt | 2 + .../HideLoadMoreButtonFingerprint.kt | 15 ---- .../showmorebutton/HideShowMoreButtonPatch.kt | 68 +++++++++++++++++++ .../HideShowMoreButtonResourcePatch.kt} | 6 +- .../HideShowMoreButtonFingerprint.kt | 15 ++++ .../resources/addresources/values/strings.xml | 12 ++-- 6 files changed, 94 insertions(+), 24 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/fingerprints/HideLoadMoreButtonFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch.kt rename src/main/kotlin/app/revanced/patches/youtube/layout/hide/{loadmorebutton/HideLoadMoreButtonResourcePatch.kt => showmorebutton/HideShowMoreButtonResourcePatch.kt} (83%) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/fingerprints/HideShowMoreButtonFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt index c9384dd217..fe09f20611 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt @@ -20,6 +20,7 @@ import app.revanced.patches.shared.misc.settings.preference.TextPreference import app.revanced.patches.youtube.layout.hide.general.fingerprints.ParseElementFromBufferFingerprint import app.revanced.patches.youtube.layout.hide.general.fingerprints.PlayerOverlayFingerprint import app.revanced.patches.youtube.layout.hide.general.fingerprints.ShowWatermarkFingerprint +import app.revanced.patches.youtube.layout.hide.showmorebutton.HideShowMoreButtonPatch import app.revanced.patches.youtube.misc.litho.filter.LithoFilterPatch import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch import app.revanced.patches.youtube.misc.settings.SettingsPatch @@ -35,6 +36,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction LithoFilterPatch::class, SettingsPatch::class, AddResourcesPatch::class, + HideShowMoreButtonPatch::class, NavigationBarHookPatch::class // Used by Keyword Content filter. ], compatiblePackages = [ diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/fingerprints/HideLoadMoreButtonFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/fingerprints/HideLoadMoreButtonFingerprint.kt deleted file mode 100644 index 2433ae38b8..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/fingerprints/HideLoadMoreButtonFingerprint.kt +++ /dev/null @@ -1,15 +0,0 @@ -package app.revanced.patches.youtube.layout.hide.loadmorebutton.fingerprints - -import app.revanced.patches.youtube.layout.hide.loadmorebutton.HideLoadMoreButtonResourcePatch -import app.revanced.util.patch.LiteralValueFingerprint -import com.android.tools.smali.dexlib2.Opcode - -internal object HideLoadMoreButtonFingerprint : LiteralValueFingerprint( - opcodes = listOf( - Opcode.CONST, - Opcode.CONST_4, - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT_OBJECT - ), - literalSupplier = { HideLoadMoreButtonResourcePatch.expandButtonDownId } -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch.kt new file mode 100644 index 0000000000..268276f1ac --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch.kt @@ -0,0 +1,68 @@ +package app.revanced.patches.youtube.layout.hide.showmorebutton + +import app.revanced.util.exception +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patches.youtube.layout.hide.showmorebutton.fingerprints.HideShowMoreButtonFingerprint +import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction + +@Patch( + description = "Adds an option to hide the button under videos that loads similar videos.", + dependencies = [ + HideShowMoreButtonResourcePatch::class, + NavigationBarHookPatch::class + ], + compatiblePackages = [ + CompatiblePackage( + "com.google.android.youtube", + [ + "18.32.39", + "18.37.36", + "18.38.44", + "18.43.45", + "18.44.41", + "18.45.43", + "18.48.39", + "18.49.37", + "19.01.34", + "19.02.39", + "19.03.36", + "19.04.38", + "19.05.36", + "19.06.39", + "19.07.40", + "19.08.36", + "19.09.37" + ] + ) + ] +) +@Suppress("unused") +object HideShowMoreButtonPatch : BytecodePatch( + setOf(HideShowMoreButtonFingerprint) +) { + private const val INTEGRATIONS_CLASS_DESCRIPTOR = + "Lapp/revanced/integrations/youtube/patches/HideShowMoreButtonPatch;" + + override fun execute(context: BytecodeContext) { + HideShowMoreButtonFingerprint.result?.let { + it.mutableMethod.apply { + val moveRegisterIndex = it.scanResult.patternScanResult!!.endIndex + val viewRegister = + getInstruction(moveRegisterIndex).registerA + + val insertIndex = moveRegisterIndex + 1 + addInstruction( + insertIndex, + "invoke-static { v$viewRegister }, " + + "$INTEGRATIONS_CLASS_DESCRIPTOR->hideShowMoreButton(Landroid/view/View;)V" + ) + } + } ?: throw HideShowMoreButtonFingerprint.exception + } +} diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonResourcePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonResourcePatch.kt similarity index 83% rename from src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonResourcePatch.kt rename to src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonResourcePatch.kt index 86d4734f14..761a0c7154 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonResourcePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonResourcePatch.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.layout.hide.loadmorebutton +package app.revanced.patches.youtube.layout.hide.showmorebutton import app.revanced.patcher.data.ResourceContext import app.revanced.patcher.patch.ResourcePatch @@ -15,14 +15,14 @@ import app.revanced.patches.youtube.misc.settings.SettingsPatch AddResourcesPatch::class ] ) -internal object HideLoadMoreButtonResourcePatch : ResourcePatch() { +internal object HideShowMoreButtonResourcePatch : ResourcePatch() { internal var expandButtonDownId: Long = -1 override fun execute(context: ResourceContext) { AddResourcesPatch(this::class) SettingsPatch.PreferenceScreen.FEED.addPreferences( - SwitchPreference("revanced_hide_load_more_button") + SwitchPreference("revanced_hide_show_more_button") ) expandButtonDownId = ResourceMappingPatch.resourceMappings.single { diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/fingerprints/HideShowMoreButtonFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/fingerprints/HideShowMoreButtonFingerprint.kt new file mode 100644 index 0000000000..8311f9b9b4 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/fingerprints/HideShowMoreButtonFingerprint.kt @@ -0,0 +1,15 @@ +package app.revanced.patches.youtube.layout.hide.showmorebutton.fingerprints + +import app.revanced.patches.youtube.layout.hide.showmorebutton.HideShowMoreButtonResourcePatch +import app.revanced.util.patch.LiteralValueFingerprint +import com.android.tools.smali.dexlib2.Opcode + +internal object HideShowMoreButtonFingerprint : LiteralValueFingerprint( + opcodes = listOf( + Opcode.CONST, + Opcode.CONST_4, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT + ), + literalSupplier = { HideShowMoreButtonResourcePatch.expandButtonDownId } +) \ No newline at end of file diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index 3e66569cdc..84e0e53522 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -507,12 +507,12 @@ Info cards are hidden Info cards are shown - - - Hide \'Load More\' button - Button is hidden - Button is shown + + + Hide \'Show more\' button + Button is hidden + Button is shown Disable rolling number animations From de73f4da815fc8b6de17d0b46b8c2e8f0af7db9b Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 4 Apr 2024 17:36:43 +0400 Subject: [PATCH 4/5] refactor: Include dummy class for api backwards compatibility --- api/revanced-patches.api | 6 ++ .../loadmorebutton/HideLoadMoreButtonPatch.kt | 67 ++----------------- 2 files changed, 11 insertions(+), 62 deletions(-) diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 4bba02a523..401a1f038f 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -1452,6 +1452,12 @@ public final class app/revanced/patches/youtube/layout/hide/shorts/HideShortsCom public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V } +public final class app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch : app/revanced/patcher/patch/BytecodePatch { + public static final field INSTANCE Lapp/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch; + public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V +} + public final class app/revanced/patches/youtube/layout/hide/suggestedvideoendscreen/DisableSuggestedVideoEndScreenPatch : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/youtube/layout/hide/suggestedvideoendscreen/DisableSuggestedVideoEndScreenPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt index 7864a568be..fe3fc7c091 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt @@ -1,69 +1,12 @@ package app.revanced.patches.youtube.layout.hide.loadmorebutton -import app.revanced.util.exception import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstruction -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.annotation.CompatiblePackage -import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patches.youtube.layout.hide.loadmorebutton.fingerprints.HideLoadMoreButtonFingerprint -import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch -import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import app.revanced.patches.youtube.layout.hide.showmorebutton.HideShowMoreButtonPatch -@Patch( - name = "Hide \'Load more\' button", - description = "Adds an option to hide the button under videos that loads similar videos.", - dependencies = [ - HideLoadMoreButtonResourcePatch::class, - NavigationBarHookPatch::class - ], - compatiblePackages = [ - CompatiblePackage( - "com.google.android.youtube", - [ - "18.32.39", - "18.37.36", - "18.38.44", - "18.43.45", - "18.44.41", - "18.45.43", - "18.48.39", - "18.49.37", - "19.01.34", - "19.02.39", - "19.03.36", - "19.04.38", - "19.05.36", - "19.06.39", - "19.07.40", - "19.08.36", - "19.09.37" - ] - ) - ] -) -@Suppress("unused") +@Deprecated("This patch class has been renamed to HideShowMoreButtonPatch.") object HideLoadMoreButtonPatch : BytecodePatch( - setOf(HideLoadMoreButtonFingerprint) + dependencies = setOf(HideShowMoreButtonPatch::class) ) { - private const val INTEGRATIONS_CLASS_DESCRIPTOR = - "Lapp/revanced/integrations/youtube/patches/HideLoadMoreButtonPatch;" - - override fun execute(context: BytecodeContext) { - HideLoadMoreButtonFingerprint.result?.let { - it.mutableMethod.apply { - val moveRegisterIndex = it.scanResult.patternScanResult!!.endIndex - val viewRegister = - getInstruction(moveRegisterIndex).registerA - - val insertIndex = moveRegisterIndex + 1 - addInstruction( - insertIndex, - "invoke-static { v$viewRegister }, " + - "$INTEGRATIONS_CLASS_DESCRIPTOR->hideLoadMoreButton(Landroid/view/View;)V" - ) - } - } ?: throw HideLoadMoreButtonFingerprint.exception - } -} + override fun execute(context: BytecodeContext) {} +} \ No newline at end of file From 22fd6cb965e81ff7af30c4fa96776b2250ecf6b4 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 4 Apr 2024 20:09:33 +0400 Subject: [PATCH 5/5] refactor: Merge into hide layout components --- api/revanced-patches.api | 6 -- .../hide/general/HideLayoutComponentsPatch.kt | 31 +++++++-- .../HideLayoutComponentsResourcePatch.kt} | 10 +-- .../HideShowMoreButtonFingerprint.kt | 6 +- .../loadmorebutton/HideLoadMoreButtonPatch.kt | 6 +- .../showmorebutton/HideShowMoreButtonPatch.kt | 68 ------------------- .../resources/addresources/values/strings.xml | 12 ++-- 7 files changed, 38 insertions(+), 101 deletions(-) rename src/main/kotlin/app/revanced/patches/youtube/layout/hide/{showmorebutton/HideShowMoreButtonResourcePatch.kt => general/HideLayoutComponentsResourcePatch.kt} (72%) rename src/main/kotlin/app/revanced/patches/youtube/layout/hide/{showmorebutton => general}/fingerprints/HideShowMoreButtonFingerprint.kt (55%) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index 401a1f038f..4bba02a523 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -1452,12 +1452,6 @@ public final class app/revanced/patches/youtube/layout/hide/shorts/HideShortsCom public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V } -public final class app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch : app/revanced/patcher/patch/BytecodePatch { - public static final field INSTANCE Lapp/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch; - public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V - public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V -} - public final class app/revanced/patches/youtube/layout/hide/suggestedvideoendscreen/DisableSuggestedVideoEndScreenPatch : app/revanced/patcher/patch/BytecodePatch { public static final field INSTANCE Lapp/revanced/patches/youtube/layout/hide/suggestedvideoendscreen/DisableSuggestedVideoEndScreenPatch; public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt index fe09f20611..c15078dc48 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt @@ -1,6 +1,7 @@ package app.revanced.patches.youtube.layout.hide.general import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels import app.revanced.patcher.extensions.InstructionExtensions.getInstruction @@ -17,16 +18,17 @@ import app.revanced.patches.shared.misc.settings.preference.PreferenceScreen import app.revanced.patches.shared.misc.settings.preference.PreferenceScreen.Sorting import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.shared.misc.settings.preference.TextPreference +import app.revanced.patches.youtube.layout.hide.general.fingerprints.HideShowMoreButtonFingerprint import app.revanced.patches.youtube.layout.hide.general.fingerprints.ParseElementFromBufferFingerprint import app.revanced.patches.youtube.layout.hide.general.fingerprints.PlayerOverlayFingerprint import app.revanced.patches.youtube.layout.hide.general.fingerprints.ShowWatermarkFingerprint -import app.revanced.patches.youtube.layout.hide.showmorebutton.HideShowMoreButtonPatch import app.revanced.patches.youtube.misc.litho.filter.LithoFilterPatch import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch import app.revanced.patches.youtube.misc.settings.SettingsPatch import app.revanced.util.resultOrThrow import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction @Patch( @@ -36,7 +38,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction LithoFilterPatch::class, SettingsPatch::class, AddResourcesPatch::class, - HideShowMoreButtonPatch::class, + HideLayoutComponentsResourcePatch::class, NavigationBarHookPatch::class // Used by Keyword Content filter. ], compatiblePackages = [ @@ -66,7 +68,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction ) @Suppress("unused") object HideLayoutComponentsPatch : BytecodePatch( - setOf(ParseElementFromBufferFingerprint, PlayerOverlayFingerprint), + setOf(ParseElementFromBufferFingerprint, PlayerOverlayFingerprint, HideShowMoreButtonFingerprint), ) { private const val LAYOUT_COMPONENTS_FILTER_CLASS_DESCRIPTOR = "Lapp/revanced/integrations/youtube/patches/components/LayoutComponentsFilter;" @@ -122,9 +124,7 @@ object HideLayoutComponentsPatch : BytecodePatch( SwitchPreference("revanced_hide_notify_me_button"), SwitchPreference("revanced_hide_search_result_recommendations"), SwitchPreference("revanced_hide_search_result_shelf_header"), - ) - - SettingsPatch.PreferenceScreen.FEED.addPreferences( + SwitchPreference("revanced_hide_show_more_button"), PreferenceScreen( key = "revanced_hide_keyword_content_screen", sorting = Sorting.UNSORTED, @@ -203,5 +203,24 @@ object HideLayoutComponentsPatch : BytecodePatch( } // endregion + + // region Show more button + + HideShowMoreButtonFingerprint.resultOrThrow().let { + it.mutableMethod.apply { + val moveRegisterIndex = it.scanResult.patternScanResult!!.endIndex + val viewRegister = + getInstruction(moveRegisterIndex).registerA + + val insertIndex = moveRegisterIndex + 1 + addInstruction( + insertIndex, + "invoke-static { v$viewRegister }, " + + "$LAYOUT_COMPONENTS_FILTER_CLASS_DESCRIPTOR->hideShowMoreButton(Landroid/view/View;)V" + ) + } + } + + // endregion } } diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonResourcePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsResourcePatch.kt similarity index 72% rename from src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonResourcePatch.kt rename to src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsResourcePatch.kt index 761a0c7154..7b9dce7c5c 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonResourcePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsResourcePatch.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.layout.hide.showmorebutton +package app.revanced.patches.youtube.layout.hide.general import app.revanced.patcher.data.ResourceContext import app.revanced.patcher.patch.ResourcePatch @@ -15,16 +15,10 @@ import app.revanced.patches.youtube.misc.settings.SettingsPatch AddResourcesPatch::class ] ) -internal object HideShowMoreButtonResourcePatch : ResourcePatch() { +internal object HideLayoutComponentsResourcePatch : ResourcePatch() { internal var expandButtonDownId: Long = -1 override fun execute(context: ResourceContext) { - AddResourcesPatch(this::class) - - SettingsPatch.PreferenceScreen.FEED.addPreferences( - SwitchPreference("revanced_hide_show_more_button") - ) - expandButtonDownId = ResourceMappingPatch.resourceMappings.single { it.type == "layout" && it.name == "expand_button_down" }.id diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/fingerprints/HideShowMoreButtonFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/fingerprints/HideShowMoreButtonFingerprint.kt similarity index 55% rename from src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/fingerprints/HideShowMoreButtonFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/fingerprints/HideShowMoreButtonFingerprint.kt index 8311f9b9b4..a9e66c3a67 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/fingerprints/HideShowMoreButtonFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/fingerprints/HideShowMoreButtonFingerprint.kt @@ -1,6 +1,6 @@ -package app.revanced.patches.youtube.layout.hide.showmorebutton.fingerprints +package app.revanced.patches.youtube.layout.hide.general.fingerprints -import app.revanced.patches.youtube.layout.hide.showmorebutton.HideShowMoreButtonResourcePatch +import app.revanced.patches.youtube.layout.hide.general.HideLayoutComponentsResourcePatch import app.revanced.util.patch.LiteralValueFingerprint import com.android.tools.smali.dexlib2.Opcode @@ -11,5 +11,5 @@ internal object HideShowMoreButtonFingerprint : LiteralValueFingerprint( Opcode.INVOKE_STATIC, Opcode.MOVE_RESULT_OBJECT ), - literalSupplier = { HideShowMoreButtonResourcePatch.expandButtonDownId } + literalSupplier = { HideLayoutComponentsResourcePatch.expandButtonDownId } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt index fe3fc7c091..0ad1000d6d 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/loadmorebutton/HideLoadMoreButtonPatch.kt @@ -2,11 +2,11 @@ package app.revanced.patches.youtube.layout.hide.loadmorebutton import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patches.youtube.layout.hide.showmorebutton.HideShowMoreButtonPatch +import app.revanced.patches.youtube.layout.hide.general.HideLayoutComponentsPatch -@Deprecated("This patch class has been renamed to HideShowMoreButtonPatch.") +@Deprecated("This patch class has been merged into HideLayoutComponentsPatch.") object HideLoadMoreButtonPatch : BytecodePatch( - dependencies = setOf(HideShowMoreButtonPatch::class) + dependencies = setOf(HideLayoutComponentsPatch::class) ) { override fun execute(context: BytecodeContext) {} } \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch.kt deleted file mode 100644 index 268276f1ac..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/showmorebutton/HideShowMoreButtonPatch.kt +++ /dev/null @@ -1,68 +0,0 @@ -package app.revanced.patches.youtube.layout.hide.showmorebutton - -import app.revanced.util.exception -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstruction -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.annotation.CompatiblePackage -import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patches.youtube.layout.hide.showmorebutton.fingerprints.HideShowMoreButtonFingerprint -import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch -import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction - -@Patch( - description = "Adds an option to hide the button under videos that loads similar videos.", - dependencies = [ - HideShowMoreButtonResourcePatch::class, - NavigationBarHookPatch::class - ], - compatiblePackages = [ - CompatiblePackage( - "com.google.android.youtube", - [ - "18.32.39", - "18.37.36", - "18.38.44", - "18.43.45", - "18.44.41", - "18.45.43", - "18.48.39", - "18.49.37", - "19.01.34", - "19.02.39", - "19.03.36", - "19.04.38", - "19.05.36", - "19.06.39", - "19.07.40", - "19.08.36", - "19.09.37" - ] - ) - ] -) -@Suppress("unused") -object HideShowMoreButtonPatch : BytecodePatch( - setOf(HideShowMoreButtonFingerprint) -) { - private const val INTEGRATIONS_CLASS_DESCRIPTOR = - "Lapp/revanced/integrations/youtube/patches/HideShowMoreButtonPatch;" - - override fun execute(context: BytecodeContext) { - HideShowMoreButtonFingerprint.result?.let { - it.mutableMethod.apply { - val moveRegisterIndex = it.scanResult.patternScanResult!!.endIndex - val viewRegister = - getInstruction(moveRegisterIndex).registerA - - val insertIndex = moveRegisterIndex + 1 - addInstruction( - insertIndex, - "invoke-static { v$viewRegister }, " + - "$INTEGRATIONS_CLASS_DESCRIPTOR->hideShowMoreButton(Landroid/view/View;)V" - ) - } - } ?: throw HideShowMoreButtonFingerprint.exception - } -} diff --git a/src/main/resources/addresources/values/strings.xml b/src/main/resources/addresources/values/strings.xml index 84e0e53522..53571b78e3 100644 --- a/src/main/resources/addresources/values/strings.xml +++ b/src/main/resources/addresources/values/strings.xml @@ -83,6 +83,11 @@ Hide \'People also watched\' recommendations Recommendations are hidden Recommendations are shown + + Hide \'Show more\' button + Button is hidden + Button is shown Hide timed reactions Timed reactions are hidden Timed reactions are shown @@ -507,13 +512,6 @@ Info cards are hidden Info cards are shown - - - Hide \'Show more\' button - Button is hidden - Button is shown - Disable rolling number animations Rolling numbers are not animated