From b9931deca41e3b1ccc3d3fce6aa2f4ff234de7a9 Mon Sep 17 00:00:00 2001 From: inotia00 Date: Sat, 18 Feb 2023 14:26:45 +0900 Subject: [PATCH] add `hide-player-button-background` patch --- .../HidePlayerButtonFingerprint.kt | 10 ++++ .../patch/HidePlayerButtonBackgroundPatch.kt | 57 +++++++++++++++++++ .../patch/PlayerButtonOverlayPatch.kt | 50 ---------------- 3 files changed, 67 insertions(+), 50 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/player/playerbuttonbg/fingerprints/HidePlayerButtonFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/player/playerbuttonbg/patch/HidePlayerButtonBackgroundPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/playerbuttonoverlay/patch/PlayerButtonOverlayPatch.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/player/playerbuttonbg/fingerprints/HidePlayerButtonFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/player/playerbuttonbg/fingerprints/HidePlayerButtonFingerprint.kt new file mode 100644 index 000000000..cdf96d48e --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/player/playerbuttonbg/fingerprints/HidePlayerButtonFingerprint.kt @@ -0,0 +1,10 @@ +package app.revanced.patches.youtube.layout.player.playerbuttonbg.fingerprints + +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint + +object HidePlayerButtonFingerprint : MethodFingerprint ( + customFingerprint = { + it.definingClass == "Lapp/revanced/integrations/patches/layout/PlayerLayoutPatch;" + && it.name == "hidePlayerButton" + } +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/player/playerbuttonbg/patch/HidePlayerButtonBackgroundPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/player/playerbuttonbg/patch/HidePlayerButtonBackgroundPatch.kt new file mode 100644 index 000000000..7da7e7160 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/player/playerbuttonbg/patch/HidePlayerButtonBackgroundPatch.kt @@ -0,0 +1,57 @@ +package app.revanced.patches.youtube.layout.player.playerbuttonbg.patch + +import app.revanced.extensions.toErrorResult +import app.revanced.patcher.annotation.Description +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.addInstruction +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultSuccess +import app.revanced.patcher.patch.annotations.DependsOn +import app.revanced.patcher.patch.annotations.Patch +import app.revanced.patches.shared.annotation.YouTubeCompatibility +import app.revanced.patches.youtube.layout.player.playerbuttonbg.fingerprints.HidePlayerButtonFingerprint +import app.revanced.patches.youtube.misc.playerbutton.patch.PlayerButtonPatch +import app.revanced.patches.youtube.misc.settings.resource.patch.SettingsPatch + +@Patch +@Name("hide-player-button-background") +@Description("Hide player button background.") +@DependsOn( + [ + PlayerButtonPatch::class, + SettingsPatch::class + ] +) +@YouTubeCompatibility +@Version("0.0.1") +class HidePlayerButtonBackgroundPatch : BytecodePatch( + listOf( + HidePlayerButtonFingerprint + ) +) { + override fun execute(context: BytecodeContext): PatchResult { + + HidePlayerButtonFingerprint.result?.mutableMethod?.addInstruction( + 0, + "invoke-static { p0 }, Lapp/revanced/integrations/utils/ResourceHelper;->hidePlayerButtonBackground(Landroid/view/View;)V" + ) ?: return HidePlayerButtonFingerprint.toErrorResult() + + /* + * Add settings + */ + SettingsPatch.addPreference( + arrayOf( + "PREFERENCE: OTHER_LAYOUT_SETTINGS", + "PREFERENCE_HEADER: PLAYER", + "SETTINGS: HIDE_PLAYER_BUTTON_BACKGROUND" + ) + ) + + SettingsPatch.updatePatchStatus("hide-player-button-background") + + return PatchResultSuccess() + } +} diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/playerbuttonoverlay/patch/PlayerButtonOverlayPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/playerbuttonoverlay/patch/PlayerButtonOverlayPatch.kt deleted file mode 100644 index 0f7d3706e..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/playerbuttonoverlay/patch/PlayerButtonOverlayPatch.kt +++ /dev/null @@ -1,50 +0,0 @@ -package app.revanced.patches.youtube.misc.playerbuttonoverlay.patch - -import app.revanced.extensions.doRecursively -import app.revanced.patcher.annotation.Description -import app.revanced.patcher.annotation.Name -import app.revanced.patcher.annotation.Version -import app.revanced.patcher.data.ResourceContext -import app.revanced.patcher.patch.PatchResult -import app.revanced.patcher.patch.PatchResultSuccess -import app.revanced.patcher.patch.ResourcePatch -import app.revanced.patcher.patch.annotations.DependsOn -import app.revanced.patcher.patch.annotations.Patch -import app.revanced.patches.shared.annotation.YouTubeCompatibility -import app.revanced.patches.youtube.misc.settings.resource.patch.SettingsPatch -import app.revanced.util.resources.ResourceHelper -import org.w3c.dom.Element - -@Patch -@Name("remove-player-button-background") -@Description("Removes the background from the video player buttons.") -@DependsOn([SettingsPatch::class]) -@YouTubeCompatibility -@Version("0.0.1") -class PlayerButtonOverlayPatch : ResourcePatch { - private companion object { - const val RESOURCE_FILE_PATH = "res/drawable/player_button_circle_background.xml" - - val replacements = arrayOf( - "color" - ) - } - - override fun execute(context: ResourceContext): PatchResult { - context.xmlEditor[RESOURCE_FILE_PATH].use { editor -> - editor.file.doRecursively { node -> - replacements.forEach replacement@{ replacement -> - if (node !is Element) return@replacement - - node.getAttributeNode("android:$replacement")?.let { attribute -> - attribute.textContent = "@android:color/transparent" - } - } - } - } - - SettingsPatch.updatePatchStatus("remove-player-button-background") - - return PatchResultSuccess() - } -} \ No newline at end of file