commit 4619a4fdc0ab67e5b23be5d11f4a5b61aac30ec1
parent e3c2cdd4789c432a6f42818223cbab906eabf8e9
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Mon, 26 Jun 2023 02:30:27 +0200

feat: unlimited multi snap

Diffstat:
Mapp/src/main/assets/lang/en_US.json | 4++++
Mapp/src/main/kotlin/me/rhunk/snapenhance/config/ConfigProperty.kt | 5+++++
Aapp/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/UnlimitedMultiSnap.kt | 26++++++++++++++++++++++++++
Mapp/src/main/kotlin/me/rhunk/snapenhance/manager/impl/FeatureManager.kt | 2++
4 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/app/src/main/assets/lang/en_US.json b/app/src/main/assets/lang/en_US.json @@ -210,6 +210,10 @@ "amoled_dark_mode": { "name": "AMOLED Dark Mode", "description": "Enables AMOLED dark mode\nMake sure Snapchat's dark mode is enabled" + }, + "unlimited_multi_snap": { + "name": "Unlimited Multi Snap", + "description": "Allows you to take an unlimited amount of multi snaps" } }, diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigProperty.kt b/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigProperty.kt @@ -355,6 +355,11 @@ enum class ConfigProperty( "amoled_dark_mode", ConfigCategory.EXPERIMENTAL_DEBUGGING, ConfigStateValue(false) + ), + UNLIMITED_MULTI_SNAP( + "unlimited_multi_snap", + ConfigCategory.EXPERIMENTAL_DEBUGGING, + ConfigStateValue(false) ); companion object { diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/UnlimitedMultiSnap.kt b/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/experiments/UnlimitedMultiSnap.kt @@ -0,0 +1,25 @@ +package me.rhunk.snapenhance.features.impl.experiments + +import me.rhunk.snapenhance.config.ConfigProperty +import me.rhunk.snapenhance.features.Feature +import me.rhunk.snapenhance.features.FeatureLoadParams +import me.rhunk.snapenhance.hook.HookStage +import me.rhunk.snapenhance.hook.hookConstructor +import me.rhunk.snapenhance.util.setObjectField + +class UnlimitedMultiSnap : Feature("UnlimitedMultiSnap", loadParams = FeatureLoadParams.ACTIVITY_CREATE_ASYNC) { + override fun asyncOnActivityCreate() { + android.util.Pair::class.java.hookConstructor(HookStage.AFTER, { + context.config.bool(ConfigProperty.UNLIMITED_MULTI_SNAP) + }) { param -> + val first = param.arg<Any>(0) + val second = param.arg<Any>(1) + if ( + first == true && // isOverTheLimit + second == 8 // limit + ) { + param.thisObject<Any>().setObjectField("first", false) + } + } + } +}+ \ No newline at end of file diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/manager/impl/FeatureManager.kt b/app/src/main/kotlin/me/rhunk/snapenhance/manager/impl/FeatureManager.kt @@ -13,6 +13,7 @@ import me.rhunk.snapenhance.features.impl.experiments.AmoledDarkMode import me.rhunk.snapenhance.features.impl.experiments.AppPasscode import me.rhunk.snapenhance.features.impl.experiments.InfiniteStoryBoost import me.rhunk.snapenhance.features.impl.experiments.MeoPasscodeBypass +import me.rhunk.snapenhance.features.impl.experiments.UnlimitedMultiSnap import me.rhunk.snapenhance.features.impl.tweaks.AntiAutoSave import me.rhunk.snapenhance.features.impl.tweaks.AutoSave import me.rhunk.snapenhance.features.impl.tweaks.DisableVideoLengthRestriction @@ -85,6 +86,7 @@ class FeatureManager(private val context: ModContext) : Manager { register(InfiniteStoryBoost::class) register(AmoledDarkMode::class) register(PinConversations::class) + register(UnlimitedMultiSnap::class) initializeFeatures() }