From b682ee8432274db2df60660408c1f6c43e0d02a7 Mon Sep 17 00:00:00 2001 From: C R E S T <217463890+imCrest@users.noreply.github.com> Date: Tue, 14 Apr 2026 15:37:20 +0530 Subject: [PATCH] Add custom purchase date handling for SnapchatPlus --- .../core/features/impl/global/SnapchatPlus.kt | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/core/src/main/kotlin/me/eternal/purrfectsnap/core/features/impl/global/SnapchatPlus.kt b/core/src/main/kotlin/me/eternal/purrfectsnap/core/features/impl/global/SnapchatPlus.kt index 048e9ad1..ba08a896 100644 --- a/core/src/main/kotlin/me/eternal/purrfectsnap/core/features/impl/global/SnapchatPlus.kt +++ b/core/src/main/kotlin/me/eternal/purrfectsnap/core/features/impl/global/SnapchatPlus.kt @@ -8,9 +8,11 @@ import me.eternal.purrfectsnap.core.util.hook.HookStage import me.eternal.purrfectsnap.core.util.hook.hook import me.eternal.purrfectsnap.core.util.hook.hookConstructor import me.eternal.purrfectsnap.mapper.impl.PlusSubscriptionMapper +import java.time.LocalDate +import java.time.ZoneId +import java.time.format.DateTimeFormatter class SnapchatPlus: Feature("SnapchatPlus") { - private val originalSubscriptionTime = (System.currentTimeMillis() - 7776000000L) private val expirationTimeMillis = (System.currentTimeMillis() + 15552000000L) override fun init() { @@ -40,7 +42,23 @@ class SnapchatPlus: Feature("SnapchatPlus") { //subscription status set(statusField.getAsString()!!, 2) - set(originalSubscriptionTimeMillisField.getAsString()!!, originalSubscriptionTime) + val fallbackOriginalSubscriptionTime = System.currentTimeMillis() - 7776000000L + val customPurchaseDateMillis = if (context.config.global.snapchatPlusCustomPurchaseDate.get()) { + runCatching { + LocalDate + .parse(context.config.global.snapchatPlusPurchaseDate.get(), DateTimeFormatter.ISO_LOCAL_DATE) + .atStartOfDay(ZoneId.systemDefault()) + .toInstant() + .toEpochMilli() + }.getOrNull() + } else { + null + } + + set( + originalSubscriptionTimeMillisField.getAsString()!!, + customPurchaseDateMillis ?: fallbackOriginalSubscriptionTime + ) set(expirationTimeMillisField.getAsString()!!, expirationTimeMillis) } }