diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/SnapchatPlus.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/SnapchatPlus.kt index cb52809c..5d0b1717 100644 --- a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/SnapchatPlus.kt +++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/SnapchatPlus.kt @@ -1,10 +1,10 @@ package me.rhunk.snapenhance.core.features.impl.global import me.rhunk.snapenhance.core.features.Feature +import me.rhunk.snapenhance.core.util.dataBuilder import me.rhunk.snapenhance.core.util.hook.HookStage import me.rhunk.snapenhance.core.util.hook.hook import me.rhunk.snapenhance.core.util.hook.hookConstructor -import me.rhunk.snapenhance.core.util.ktx.setObjectField import me.rhunk.snapenhance.mapper.impl.PlusSubscriptionMapper class SnapchatPlus: Feature("SnapchatPlus") { @@ -17,19 +17,30 @@ class SnapchatPlus: Feature("SnapchatPlus") { if (snapchatPlusTier != null) { context.mappings.useMapper(PlusSubscriptionMapper::class) { classReference.get()?.hookConstructor(HookStage.AFTER) { param -> - val instance = param.thisObject() - //subscription tier - instance.setObjectField(tierField.getAsString()!!, when (snapchatPlusTier) { - "not_subscribed" -> 1 - "basic" -> 2 - "ad_free" -> 3 - else -> 2 - }) - //subscription status - instance.setObjectField(statusField.getAsString()!!, 2) + param.thisObject().dataBuilder { + //subscription tier + if (get(tierField.getAsString()!!)?.javaClass?.isEnum == true) { + set(tierField.getAsString()!!, when (snapchatPlusTier) { + "not_subscribed" -> "NO_ACCESS" + "basic" -> "SNAPCHAT_PLUS" + "ad_free" -> "SNAPCHAT_PLUS_AD_FREE" + else -> "SNAPCHAT_PLUS" + }) + } else { + set(tierField.getAsString()!!, when (snapchatPlusTier) { + "not_subscribed" -> 1 + "basic" -> 2 + "ad_free" -> 3 + else -> 2 + }) + } - instance.setObjectField(originalSubscriptionTimeMillisField.getAsString()!!, originalSubscriptionTime) - instance.setObjectField(expirationTimeMillisField.getAsString()!!, expirationTimeMillis) + //subscription status + set(statusField.getAsString()!!, 2) + + set(originalSubscriptionTimeMillisField.getAsString()!!, originalSubscriptionTime) + set(expirationTimeMillisField.getAsString()!!, expirationTimeMillis) + } } } }