commit b6f4d91cacdfc255f5af7f660a2d36df3ffbc08f
parent 7d932f0fb4e5183de78ee3c16e3661a702ff9cb7
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sun,  8 Dec 2024 18:02:21 +0100

feat(core/snapchat_plus): ad free tier

Diffstat:
Mcommon/src/main/assets/lang/en_US.json | 5+++++
Mcommon/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Global.kt | 2+-
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/global/SnapchatPlus.kt | 29+++++++++++++++++------------
3 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/common/src/main/assets/lang/en_US.json b/common/src/main/assets/lang/en_US.json @@ -1373,6 +1373,11 @@ "bitmoji_avatar_changes": "Notify when someone changes their Bitmoji avatar", "bitmoji_background_changes": "Notify when someone changes their Bitmoji background", "bitmoji_scene_changes": "Notify when someone changes their Bitmoji scene" + }, + "snapchat_plus":{ + "not_subscribed": "Not Subscribed", + "basic": "Basic", + "ad_free": "Ad Free" } } }, diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Global.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Global.kt @@ -37,7 +37,7 @@ class Global : ConfigContainer() { } val betterLocation = container("better_location", BetterLocationConfig()) - val snapchatPlus = boolean("snapchat_plus") { requireRestart() } + val snapchatPlus = unique("snapchat_plus", "not_subscribed", "basic", "ad_free") { requireRestart() } val mediaUploadQualityConfig = container("media_upload_quality", MediaUploadQualityConfig()) val disableConfirmationDialogs = multiple("disable_confirmation_dialogs", "erase_message", "remove_friend", "block_friend", "ignore_friend", "hide_friend", "hide_conversation", "clear_conversation") { requireRestart() } val disableMetrics = boolean("disable_metrics") { requireRestart() } 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 @@ -13,20 +13,25 @@ class SnapchatPlus: Feature("SnapchatPlus") { private val expirationTimeMillis = (System.currentTimeMillis() + 15552000000L) override fun init() { - if (!context.config.global.snapchatPlus.get()) return + val snapchatPlusTier = context.config.global.snapchatPlus.getNullable() - context.mappings.useMapper(PlusSubscriptionMapper::class) { - classReference.get()?.hookConstructor(HookStage.AFTER) { param -> - val instance = param.thisObject<Any>() - val tier = instance.getObjectField(tierField.getAsString()!!) - if (tier == 2) return@hookConstructor - //subscription tier - instance.setObjectField(tierField.getAsString()!!, 2) - //subscription status - instance.setObjectField(statusField.getAsString()!!, 2) + if (snapchatPlusTier != null) { + context.mappings.useMapper(PlusSubscriptionMapper::class) { + classReference.get()?.hookConstructor(HookStage.AFTER) { param -> + val instance = param.thisObject<Any>() + //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) - instance.setObjectField(originalSubscriptionTimeMillisField.getAsString()!!, originalSubscriptionTime) - instance.setObjectField(expirationTimeMillisField.getAsString()!!, expirationTimeMillis) + instance.setObjectField(originalSubscriptionTimeMillisField.getAsString()!!, originalSubscriptionTime) + instance.setObjectField(expirationTimeMillisField.getAsString()!!, expirationTimeMillis) + } } }