diff --git a/patches/api/patches.api b/patches/api/patches.api index ca59944025..5eec2abe38 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -328,6 +328,10 @@ public final class app/revanced/patches/irplus/ad/RemoveAdsPatchKt { public static final fun getRemoveAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/letterboxd/ads/HideAdsPatchKt { + public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/lightroom/misc/login/DisableMandatoryLoginPatchKt { public static final fun getDisableMandatoryLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/Fingerprints.kt new file mode 100644 index 0000000000..423c262846 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/Fingerprints.kt @@ -0,0 +1,29 @@ +package app.revanced.patches.letterboxd.ads + +import app.revanced.patcher.fingerprint + +internal const val admobHelperClassName = "Lcom/letterboxd/letterboxd/helpers/AdmobHelper;" + +internal val admobHelperSetShowAdsFingerprint = fingerprint { + custom { method, classDef -> + method.name == "setShowAds" && classDef.type == admobHelperClassName + } +} + +internal val admobHelperShouldShowAdsFingerprint = fingerprint { + custom { method, classDef -> + method.name == "shouldShowAds" && classDef.type == admobHelperClassName + } +} + +internal val filmFragmentShowAdsFingerprint = fingerprint { + custom { method, classDef -> + method.name == "showAds" && classDef.type.endsWith("/FilmFragment;") + } +} + +internal val memberExtensionShowAdsFingerprint = fingerprint { + custom { method, classDef -> + method.name == "showAds" && classDef.type.endsWith("/AMemberExtensionKt;") + } +} \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/HideAdsPatch.kt new file mode 100644 index 0000000000..3bc5dc0d49 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/HideAdsPatch.kt @@ -0,0 +1,22 @@ + +package app.revanced.patches.letterboxd.ads + +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.util.returnEarly + +@Suppress("unused") +val hideAdsPatch = bytecodePatch( + name = "Hide ads", +) { + compatibleWith("com.letterboxd.letterboxd") + + execute { + admobHelperSetShowAdsFingerprint.method.addInstruction(0, "const p1, 0x0") + + // Make the methods always return false. + listOf(admobHelperShouldShowAdsFingerprint, filmFragmentShowAdsFingerprint, memberExtensionShowAdsFingerprint).forEach { + it.method.returnEarly(false) + } + } +}