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:
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)
+ }
}
}