From 4aa0d87a5cf64017de69266cd4ee7347e589cb87 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 28 Apr 2024 08:25:33 +0900 Subject: [PATCH] feat(YouTube/Hide layout components): `Hide YouTube settings menu` settings --- .../components/LayoutComponentsPatch.kt | 23 +++++++++++++++++-- .../fingerprints/SettingsMenuFingerprint.kt | 8 +++++++ .../youtube/settings/host/values/strings.xml | 12 ++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/general/components/fingerprints/SettingsMenuFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/components/LayoutComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/components/LayoutComponentsPatch.kt index 48448ef3b..3a36714cf 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/components/LayoutComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/components/LayoutComponentsPatch.kt @@ -5,7 +5,6 @@ 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 -import app.revanced.patcher.patch.PatchException import app.revanced.patcher.util.smali.ExternalLabel import app.revanced.patches.shared.litho.LithoFilterPatch import app.revanced.patches.youtube.general.components.fingerprints.AccountListFingerprint @@ -14,6 +13,7 @@ import app.revanced.patches.youtube.general.components.fingerprints.AccountMenuF import app.revanced.patches.youtube.general.components.fingerprints.AccountSwitcherAccessibilityLabelFingerprint import app.revanced.patches.youtube.general.components.fingerprints.BottomUiContainerFingerprint import app.revanced.patches.youtube.general.components.fingerprints.FloatingMicrophoneFingerprint +import app.revanced.patches.youtube.general.components.fingerprints.SettingsMenuFingerprint import app.revanced.patches.youtube.utils.fingerprints.AccountMenuParentFingerprint import app.revanced.patches.youtube.utils.integrations.Constants.COMPATIBLE_PACKAGE import app.revanced.patches.youtube.utils.integrations.Constants.COMPONENTS_PATH @@ -23,6 +23,7 @@ import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.Accou import app.revanced.patches.youtube.utils.settings.SettingsPatch import app.revanced.patches.youtube.utils.viewgroup.ViewGroupMarginLayoutParamsHookPatch import app.revanced.util.getTargetIndex +import app.revanced.util.getTargetIndexWithFieldReferenceType import app.revanced.util.getTargetIndexWithMethodReferenceName import app.revanced.util.getWideLiteralInstructionIndex import app.revanced.util.patch.BaseBytecodePatch @@ -47,7 +48,8 @@ object LayoutComponentsPatch : BaseBytecodePatch( AccountMenuParentFingerprint, AccountSwitcherAccessibilityLabelFingerprint, BottomUiContainerFingerprint, - FloatingMicrophoneFingerprint + FloatingMicrophoneFingerprint, + SettingsMenuFingerprint ) ) { private const val CUSTOM_FILTER_CLASS_DESCRIPTOR = @@ -135,6 +137,23 @@ object LayoutComponentsPatch : BaseBytecodePatch( // endregion + // region patch for hide settings menu + + SettingsMenuFingerprint.resultOrThrow().let { + it.mutableMethod.apply { + val insertIndex = getTargetIndexWithFieldReferenceType("Landroid/support/v7/widget/RecyclerView;") + val insertRegister = getInstruction(insertIndex).registerA + + addInstruction( + insertIndex, + "invoke-static {v$insertRegister}, " + + "$GENERAL_CLASS_DESCRIPTOR->hideSettingsMenu(Landroid/support/v7/widget/RecyclerView;)V" + ) + } + } + + // endregion + // region patch for hide snack bar BottomUiContainerFingerprint.resultOrThrow().let { diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/components/fingerprints/SettingsMenuFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/components/fingerprints/SettingsMenuFingerprint.kt new file mode 100644 index 000000000..59f65767d --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/general/components/fingerprints/SettingsMenuFingerprint.kt @@ -0,0 +1,8 @@ +package app.revanced.patches.youtube.general.components.fingerprints + +import app.revanced.util.fingerprint.LiteralValueFingerprint + +internal object SettingsMenuFingerprint : LiteralValueFingerprint( + returnType = "Landroid/view/View;", + literalSupplier = { 16908351 } +) \ No newline at end of file diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 66dac9fd4..4872595f7 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -366,6 +366,18 @@ Some components may not be hidden." • Disabling this setting loads more ads from the server side. • You should disable this setting to make video ads visible." + + Settings menu + Hide elements in YouTube settings menu. + + Hide YouTube settings menu + Hide elements in YouTube settings menu. + YouTube settings menu filter + List of YouTube settings menu names to filter separated by a new line. + "Account +Data saving +Captions" + Toolbar Hide or change components located on the toolbar such as toolbar buttons, search bar, header.