From dc560eecf2eac2ff64959266bba0ef7a86a0009c Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Tue, 14 Nov 2023 09:38:45 +0900 Subject: [PATCH] feat(YouTube/Hide end screen overlay): support version `18.44.41` --- .../HideEndScreenOverlayPatch.kt | 33 ++++++++++--------- ...t => EndScreenResultsParentFingerprint.kt} | 2 +- 2 files changed, 19 insertions(+), 16 deletions(-) rename src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/fingerprints/{EndScreenResultsFingerprint.kt => EndScreenResultsParentFingerprint.kt} (87%) diff --git a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/HideEndScreenOverlayPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/HideEndScreenOverlayPatch.kt index 9a8ad73a3..079e3c9a7 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/HideEndScreenOverlayPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/HideEndScreenOverlayPatch.kt @@ -5,10 +5,11 @@ import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.util.smali.ExternalLabel -import app.revanced.patches.youtube.fullscreen.endscreenoverlay.fingerprints.EndScreenResultsFingerprint +import app.revanced.patches.youtube.fullscreen.endscreenoverlay.fingerprints.EndScreenResultsParentFingerprint import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch import app.revanced.patches.youtube.utils.settings.SettingsPatch import app.revanced.util.integrations.Constants.FULLSCREEN @@ -40,28 +41,30 @@ import app.revanced.util.integrations.Constants.FULLSCREEN "18.40.34", "18.41.39", "18.42.41", - "18.43.45" + "18.43.45", + "18.44.41" ] ) ] ) @Suppress("unused") object HideEndScreenOverlayPatch : BytecodePatch( - setOf(EndScreenResultsFingerprint) + setOf(EndScreenResultsParentFingerprint) ) { override fun execute(context: BytecodeContext) { - EndScreenResultsFingerprint.result?.let { - it.mutableMethod.apply { - addInstructionsWithLabels( - 0, """ - invoke-static {}, $FULLSCREEN->hideEndScreenOverlay()Z - move-result v0 - if-eqz v0, :show - return-void - """, ExternalLabel("show", getInstruction(0)) - ) - } - } ?: throw EndScreenResultsFingerprint.exception + EndScreenResultsParentFingerprint.result?.let { + it.mutableClass.methods.find { method -> method.parameters == listOf("I", "Z", "I") } + ?.apply { + addInstructionsWithLabels( + 0, """ + invoke-static {}, $FULLSCREEN->hideEndScreenOverlay()Z + move-result v0 + if-eqz v0, :show + return-void + """, ExternalLabel("show", getInstruction(0)) + ) + } ?: throw PatchException("Could not find targetMethod") + } ?: throw EndScreenResultsParentFingerprint.exception /** * Add settings diff --git a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/fingerprints/EndScreenResultsFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/fingerprints/EndScreenResultsParentFingerprint.kt similarity index 87% rename from src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/fingerprints/EndScreenResultsFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/fingerprints/EndScreenResultsParentFingerprint.kt index f4f30a9ea..b65368e71 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/fingerprints/EndScreenResultsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/endscreenoverlay/fingerprints/EndScreenResultsParentFingerprint.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.fingerprint.MethodFingerprint import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.AppRelatedEndScreenResults import app.revanced.util.bytecode.isWideLiteralExists -object EndScreenResultsFingerprint : MethodFingerprint( +object EndScreenResultsParentFingerprint : MethodFingerprint( returnType = "V", customFingerprint = { methodDef, _ -> methodDef.isWideLiteralExists(AppRelatedEndScreenResults) } ) \ No newline at end of file