From be005c533af4dbdebd1b1e742a54d4bd3396c22d Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Mon, 12 Jan 2026 17:22:27 +0700 Subject: [PATCH] refactor(photomath): HideUpdatePopupPatch --- .../photomath/misc/annoyances/Fingerprints.kt | 28 +++++++++++-------- .../misc/annoyances/HideUpdatePopupPatch.kt | 12 ++++---- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/Fingerprints.kt index 301f2f9a5..ce9deca51 100644 --- a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/Fingerprints.kt @@ -1,21 +1,25 @@ package app.revanced.patches.photomath.misc.annoyances +import app.revanced.patcher.BytecodePatchContextMethodMatching.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.accessFlags +import app.revanced.patcher.definingClass import app.revanced.patcher.fingerprint +import app.revanced.patcher.instructions +import app.revanced.patcher.invoke +import app.revanced.patcher.patch.BytecodePatchContext +import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val hideUpdatePopupFingerprint = fingerprint { +internal val BytecodePatchContext.hideUpdatePopupMethod by gettingFirstMutableMethodDeclaratively { accessFlags(AccessFlags.FINAL, AccessFlags.PUBLIC) - returns("V") - opcodes( - Opcode.CONST_HIGH16, - Opcode.INVOKE_VIRTUAL, // ViewPropertyAnimator.alpha(1.0f) - Opcode.MOVE_RESULT_OBJECT, - Opcode.CONST_WIDE_16, - Opcode.INVOKE_VIRTUAL, // ViewPropertyAnimator.setDuration(1000L) + returnType("V") + definingClass("Lcom/microblink/photomath/main/activity/MainActivity;") + instructions( + Opcode.CONST_HIGH16(), + Opcode.INVOKE_VIRTUAL(), // ViewPropertyAnimator.alpha(1.0f) + Opcode.MOVE_RESULT_OBJECT(), + Opcode.CONST_WIDE_16(), + Opcode.INVOKE_VIRTUAL(), // ViewPropertyAnimator.setDuration(1000L) ) - custom { method, _ -> - // The popup is shown only in the main activity - method.definingClass == "Lcom/microblink/photomath/main/activity/MainActivity;" - } } diff --git a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/HideUpdatePopupPatch.kt b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/HideUpdatePopupPatch.kt index 6a9c66b07..88678aa3c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/HideUpdatePopupPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/HideUpdatePopupPatch.kt @@ -1,20 +1,20 @@ package app.revanced.patches.photomath.misc.annoyances import app.revanced.patcher.extensions.addInstructions -import app.revanced.patcher.patch.bytecodePatch -import app.revanced.patches.photomath.detection.signature.signatureDetectionPatch +import app.revanced.patcher.patch.creatingBytecodePatch +import app.revanced.patches.photomath.detection.signature.`Signature detection` + @Suppress("unused") -val hideUpdatePopupPatch = bytecodePatch( - name = "Hide update popup", +val `Hide update popup` by creatingBytecodePatch( description = "Prevents the update popup from showing up.", ) { - dependsOn(signatureDetectionPatch) + dependsOn(`Signature detection`) compatibleWith("com.microblink.photomath") apply { - hideUpdatePopupFingerprint.method.addInstructions( + hideUpdatePopupMethod.addInstructions( 2, // Insert after the null check. "return-void", )