diff --git a/patches/api/patches.api b/patches/api/patches.api index 5d5c92c7b8..b82ae4c9b8 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -236,6 +236,10 @@ public final class app/revanced/patches/fotmob/ads/HideAdsPatchKt { public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/gmxmail/ads/HideAdsPatchKt { + public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/googlenews/customtabs/EnableCustomTabsPatchKt { public static final fun getEnableCustomTabsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/gmxmail/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/gmxmail/ads/Fingerprints.kt new file mode 100755 index 0000000000..f391e70ecb --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/gmxmail/ads/Fingerprints.kt @@ -0,0 +1,15 @@ +package app.revanced.patches.gmxmail.ads + +import app.revanced.patcher.fingerprint + +internal val getAdvertisementStatusFingerprint = fingerprint { + custom { method, classDef -> + method.name == "getAdvertisementStatus" && classDef.endsWith("/PayMailManager;") + } +} + +internal val isUpsellingPossibleFingerprint = fingerprint { + custom { method, classDef -> + method.name == "isUpsellingPossible" && classDef.endsWith("/PayMailManager;") + } +} \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/gmxmail/ads/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/gmxmail/ads/HideAdsPatch.kt new file mode 100755 index 0000000000..aa0aadf50b --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/gmxmail/ads/HideAdsPatch.kt @@ -0,0 +1,17 @@ +package app.revanced.patches.gmxmail.ads + +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.util.returnEarly + +@Suppress("unused") +val hideAdsPatch = bytecodePatch( + name = "Hide ads", + description = "Hides sponsored ads and removes the Premium upgrade button from the navigation drawer.", +) { + compatibleWith("de.gmx.mobile.android.mail") + + execute { + getAdvertisementStatusFingerprint.method.returnEarly(2) + isUpsellingPossibleFingerprint.method.returnEarly(false) + } +}