diff --git a/src/main/kotlin/app/revanced/patches/tasker/trial/unlock/annotations/UnlockTrialCompatibility.kt b/src/main/kotlin/app/revanced/patches/tasker/trial/unlock/annotations/UnlockTrialCompatibility.kt new file mode 100644 index 00000000..3f1c42ea --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/tasker/trial/unlock/annotations/UnlockTrialCompatibility.kt @@ -0,0 +1,8 @@ +package app.revanced.patches.tasker.trial.unlock.annotations + +import app.revanced.patcher.annotation.Compatibility +import app.revanced.patcher.annotation.Package + +@Compatibility([Package("net.dinglisch.android.taskerm")]) +@Target(AnnotationTarget.CLASS) +internal annotation class UnlockTrialCompatibility diff --git a/src/main/kotlin/app/revanced/patches/tasker/trial/unlock/fingerprints/CheckLicenseFingerprint.kt b/src/main/kotlin/app/revanced/patches/tasker/trial/unlock/fingerprints/CheckLicenseFingerprint.kt new file mode 100644 index 00000000..d02ce926 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/tasker/trial/unlock/fingerprints/CheckLicenseFingerprint.kt @@ -0,0 +1,7 @@ +package app.revanced.patches.tasker.trial.unlock.fingerprints + +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint + +object CheckLicenseFingerprint : MethodFingerprint( + strings = listOf("Can't check license") +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/tasker/trial/unlock/patch/UnlockLicensePatch.kt b/src/main/kotlin/app/revanced/patches/tasker/trial/unlock/patch/UnlockLicensePatch.kt new file mode 100644 index 00000000..b96823f0 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/tasker/trial/unlock/patch/UnlockLicensePatch.kt @@ -0,0 +1,30 @@ +package app.revanced.patches.tasker.trial.unlock.patch + +import app.revanced.extensions.toErrorResult +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.patch.BytecodePatch +import app.revanced.patcher.patch.PatchResultSuccess +import app.revanced.patcher.patch.annotations.Patch +import app.revanced.patches.tasker.trial.unlock.annotations.UnlockTrialCompatibility +import app.revanced.patches.tasker.trial.unlock.fingerprints.CheckLicenseFingerprint + +@Patch +@Name("Unlock trial") +@Description("Unlocks the trial version.") +@UnlockTrialCompatibility +class UnlockLicensePatch : BytecodePatch( + listOf( + CheckLicenseFingerprint + ) +) { + override fun execute(context: BytecodeContext) = CheckLicenseFingerprint + .result + ?.mutableMethod + // Return the method early, which prompts the user with a non dismissible dialog, when the trial period is over. + ?.addInstruction(0, "return-void") + ?.let { PatchResultSuccess() } + ?: CheckLicenseFingerprint.toErrorResult() +} \ No newline at end of file