From d61bac4f8243d0ef72ca91c7c1d5facd858d515e Mon Sep 17 00:00:00 2001 From: epicsampler <102923070+epicsampler@users.noreply.github.com> Date: Sun, 22 May 2022 14:31:17 +0000 Subject: [PATCH] feat: add `amoled` patch --- .../amoled/annotations/AmoledCompatibility.kt | 13 ++++++ .../layout/amoled/patch/AmoledPatch.kt | 45 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/amoled/annotations/AmoledCompatibility.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/amoled/patch/AmoledPatch.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/amoled/annotations/AmoledCompatibility.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/amoled/annotations/AmoledCompatibility.kt new file mode 100644 index 00000000..4465aecf --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/amoled/annotations/AmoledCompatibility.kt @@ -0,0 +1,13 @@ +package app.revanced.patches.youtube.layout.amoled.annotations + +import app.revanced.patcher.annotation.Compatibility +import app.revanced.patcher.annotation.Package + +@Compatibility( + [Package( + "com.google.android.youtube", arrayOf("17.14.35", "17.17.34") + )] +) +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.RUNTIME) +internal annotation class AmoledCompatibility diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/amoled/patch/AmoledPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/amoled/patch/AmoledPatch.kt new file mode 100644 index 00000000..1ecf1a54 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/amoled/patch/AmoledPatch.kt @@ -0,0 +1,45 @@ +package app.revanced.patches.youtube.layout.amoled.patch + +import app.revanced.patcher.annotation.Description +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.data.implementation.ResourceData +import app.revanced.patcher.patch.annotations.Patch +import app.revanced.patcher.patch.implementation.ResourcePatch +import app.revanced.patcher.patch.implementation.misc.PatchResult +import app.revanced.patcher.patch.implementation.misc.PatchResultSuccess +import app.revanced.patches.youtube.layout.amoled.annotations.AmoledCompatibility +import org.w3c.dom.Element +import java.io.File + +@Patch +@Name("amoled") +@Description("Enables black theme (amoled mode)") +@AmoledCompatibility +@Version("0.0.1") +class AmoledPatch : ResourcePatch() { + override fun execute(data: ResourceData): PatchResult { + data.getXmlEditor("res${File.separator}values${File.separator}colors.xml").use { editor -> + val resourcesNode = editor.file.getElementsByTagName("resources").item(0) as Element + + for (i in 0..resourcesNode.childNodes.length) { + val node = resourcesNode.childNodes.item(i) as Element + + node.nodeValue = when (node.getAttribute("name")) { + "yt_black1", + "yt_black1_opacity95", + "yt_black2", + "yt_black3", + "yt_black4", + "yt_status_bar_background_dark" + -> "@android:color/black" + "yt_selected_nav_label_dark" + -> "#ffdf0000" + else -> continue + } + } + } + + return PatchResultSuccess() + } +}