diff --git a/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/HideGetPremiumFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/HideGetPremiumFingerprint.kt index a3ee2b541..b922b8534 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/HideGetPremiumFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/HideGetPremiumFingerprint.kt @@ -18,5 +18,5 @@ object HideGetPremiumFingerprint : MethodFingerprint( Opcode.MOVE_RESULT_OBJECT, Opcode.INVOKE_STATIC ), - listOf("FEmusic_history") + strings = listOf("FEmusic_history") ) diff --git a/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/MembershipSettingsFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/MembershipSettingsFingerprint.kt new file mode 100644 index 000000000..8744903bd --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/MembershipSettingsFingerprint.kt @@ -0,0 +1,11 @@ +package app.revanced.patches.music.misc.premium.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +object MembershipSettingsFingerprint : MethodFingerprint( + returnType = "Ljava/lang/CharSequence;", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = emptyList() +) diff --git a/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/MembershipSettingsParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/MembershipSettingsParentFingerprint.kt new file mode 100644 index 000000000..3e8f4311c --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/misc/premium/fingerprints/MembershipSettingsParentFingerprint.kt @@ -0,0 +1,12 @@ +package app.revanced.patches.music.misc.premium.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +object MembershipSettingsParentFingerprint : MethodFingerprint( + returnType = "L", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = emptyList(), + strings = listOf("SPmanage_red") +) diff --git a/src/main/kotlin/app/revanced/patches/music/misc/premium/patch/HideGetPremiumPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/premium/patch/HideGetPremiumPatch.kt index 9e69858f8..ab5eb2454 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/premium/patch/HideGetPremiumPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/premium/patch/HideGetPremiumPatch.kt @@ -5,13 +5,17 @@ import app.revanced.patcher.annotation.Description import app.revanced.patcher.annotation.Name import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.Patch import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patches.music.misc.premium.fingerprints.AccountMenuFooterFingerprint import app.revanced.patches.music.misc.premium.fingerprints.HideGetPremiumFingerprint +import app.revanced.patches.music.misc.premium.fingerprints.MembershipSettingsFingerprint +import app.revanced.patches.music.misc.premium.fingerprints.MembershipSettingsParentFingerprint import app.revanced.patches.music.utils.annotations.MusicCompatibility import app.revanced.patches.music.utils.resourceid.patch.SharedResourceIdPatch import app.revanced.patches.music.utils.resourceid.patch.SharedResourceIdPatch.Companion.PrivacyTosFooter @@ -24,13 +28,14 @@ import com.android.tools.smali.dexlib2.iface.reference.Reference @Patch @Name("Hide get premium") -@Description("Hides \"Get Premium\" label from the account menu.") +@Description("Hides \"Get Premium\" label from the account menu or settings.") @DependsOn([SharedResourceIdPatch::class]) @MusicCompatibility class HideGetPremiumPatch : BytecodePatch( listOf( AccountMenuFooterFingerprint, - HideGetPremiumFingerprint + HideGetPremiumFingerprint, + MembershipSettingsParentFingerprint ) ) { override fun execute(context: BytecodeContext) { @@ -80,6 +85,24 @@ class HideGetPremiumPatch : BytecodePatch( } } ?: throw AccountMenuFooterFingerprint.exception + MembershipSettingsParentFingerprint.result?.let { parentResult -> + MembershipSettingsFingerprint.also { + it.resolve( + context, + parentResult.classDef + ) + }.result?.let { + it.mutableMethod.apply { + addInstructions( + 0, """ + const/4 v0, 0x0 + return-object v0 + """ + ) + } + } ?: throw MembershipSettingsFingerprint.exception + } ?: throw MembershipSettingsParentFingerprint.exception + } private companion object {