From 751f6047ba1589593d881ad523727d00dfb2609b Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Tue, 29 Nov 2022 00:36:06 +0100 Subject: [PATCH] feat(youtube/hide-create-button): bump compatibility to v17.45.36 --- .../annotations/CreateButtonCompatibility.kt | 13 ------ .../patch/CreateButtonRemoverPatch.kt | 45 +++++++++---------- 2 files changed, 22 insertions(+), 36 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/pivotbar/createbutton/annotations/CreateButtonCompatibility.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/pivotbar/createbutton/annotations/CreateButtonCompatibility.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/pivotbar/createbutton/annotations/CreateButtonCompatibility.kt deleted file mode 100644 index 64adf4ced..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/pivotbar/createbutton/annotations/CreateButtonCompatibility.kt +++ /dev/null @@ -1,13 +0,0 @@ -package app.revanced.patches.youtube.layout.pivotbar.createbutton.annotations - -import app.revanced.patcher.annotation.Compatibility -import app.revanced.patcher.annotation.Package - -@Compatibility( - [Package( - "com.google.android.youtube", arrayOf("17.36.37", "17.41.37", "17.42.35", "17.43.36") - )] -) -@Target(AnnotationTarget.CLASS) -@Retention(AnnotationRetention.RUNTIME) -internal annotation class CreateButtonCompatibility \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/pivotbar/createbutton/patch/CreateButtonRemoverPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/pivotbar/createbutton/patch/CreateButtonRemoverPatch.kt index 86c5f8b2f..61cc2174b 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/pivotbar/createbutton/patch/CreateButtonRemoverPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/pivotbar/createbutton/patch/CreateButtonRemoverPatch.kt @@ -4,36 +4,36 @@ 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.MethodFingerprintExtensions.name import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult -import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.Patch -import app.revanced.patches.youtube.layout.pivotbar.createbutton.annotations.CreateButtonCompatibility -import app.revanced.patches.youtube.layout.pivotbar.createbutton.fingerprints.PivotBarCreateButtonViewFingerprint -import app.revanced.patches.youtube.layout.pivotbar.fingerprints.PivotBarFingerprint -import app.revanced.patches.youtube.layout.pivotbar.utils.InjectionUtils.REGISTER_TEMPLATE_REPLACEMENT -import app.revanced.patches.youtube.layout.pivotbar.utils.InjectionUtils.injectHook -import app.revanced.patches.youtube.misc.integrations.patch.IntegrationsPatch import app.revanced.patches.shared.mapping.misc.patch.ResourceMappingPatch -import app.revanced.patches.youtube.misc.settings.bytecode.patch.SettingsPatch import app.revanced.patches.shared.settings.preference.impl.StringResource import app.revanced.patches.shared.settings.preference.impl.SwitchPreference +import app.revanced.patches.youtube.layout.pivotbar.annotations.PivotBarCompatibility +import app.revanced.patches.youtube.layout.pivotbar.createbutton.fingerprints.PivotBarCreateButtonViewFingerprint +import app.revanced.patches.youtube.layout.pivotbar.fingerprints.InitializeButtonsFingerprint +import app.revanced.patches.youtube.layout.pivotbar.resource.patch.ResolvePivotBarFingerprintsPatch +import app.revanced.patches.youtube.layout.pivotbar.utils.InjectionUtils.REGISTER_TEMPLATE_REPLACEMENT +import app.revanced.patches.youtube.layout.pivotbar.utils.InjectionUtils.injectHook +import app.revanced.patches.youtube.layout.pivotbar.utils.InjectionUtils.toErrorResult +import app.revanced.patches.youtube.misc.integrations.patch.IntegrationsPatch +import app.revanced.patches.youtube.misc.settings.bytecode.patch.SettingsPatch @Patch -@DependsOn([IntegrationsPatch::class, ResourceMappingPatch::class, SettingsPatch::class]) +@DependsOn([IntegrationsPatch::class, ResourceMappingPatch::class, SettingsPatch::class, ResolvePivotBarFingerprintsPatch::class]) @Name("hide-create-button") @Description("Hides the create button in the navigation bar.") -@CreateButtonCompatibility +@PivotBarCompatibility @Version("0.0.1") -class CreateButtonRemoverPatch : BytecodePatch( - listOf( - PivotBarFingerprint - ) -) { +class CreateButtonRemoverPatch : BytecodePatch() { + private companion object { + const val INTEGRATIONS_CLASS_DESCRIPTOR = "Lapp/revanced/integrations/patches/HideCreateButtonPatch;" + } + override fun execute(context: BytecodeContext): PatchResult { SettingsPatch.PreferenceScreen.LAYOUT.addPreferences( SwitchPreference( @@ -49,10 +49,10 @@ class CreateButtonRemoverPatch : BytecodePatch( * Resolve fingerprints */ - val pivotBarResult = PivotBarFingerprint.result ?: return PatchResultError("PivotBarFingerprint failed") - - if (!PivotBarCreateButtonViewFingerprint.resolve(context, pivotBarResult.mutableMethod, pivotBarResult.mutableClass)) - return PatchResultError("${PivotBarCreateButtonViewFingerprint.name} failed") + InitializeButtonsFingerprint.result!!.let { + if (!PivotBarCreateButtonViewFingerprint.resolve(context, it.mutableMethod, it.mutableClass)) + return PivotBarCreateButtonViewFingerprint.toErrorResult() + } val createButtonResult = PivotBarCreateButtonViewFingerprint.result!! val insertIndex = createButtonResult.scanResult.patternScanResult!!.endIndex @@ -61,9 +61,8 @@ class CreateButtonRemoverPatch : BytecodePatch( * Inject hooks */ - val integrationsClass = "Lapp/revanced/integrations/patches/HideCreateButtonPatch;" - val hook = - "invoke-static { v$REGISTER_TEMPLATE_REPLACEMENT }, $integrationsClass->hideCreateButton(Landroid/view/View;)V" + val hook = "invoke-static { v$REGISTER_TEMPLATE_REPLACEMENT }, " + + "$INTEGRATIONS_CLASS_DESCRIPTOR->hideCreateButton(Landroid/view/View;)V" createButtonResult.mutableMethod.injectHook(hook, insertIndex)