feat(experimental): prevent forced logout

This commit is contained in:
rhunk
2023-12-17 03:15:22 +01:00
parent 614d629f07
commit d70fb0f193
4 changed files with 25 additions and 0 deletions

View File

@ -650,6 +650,10 @@
"disable_composer_modules": { "disable_composer_modules": {
"name": "Disable Composer Modules", "name": "Disable Composer Modules",
"description": "Prevents selected composer modules from being loaded\nNames must be separated by a comma" "description": "Prevents selected composer modules from being loaded\nNames must be separated by a comma"
},
"prevent_forced_logout": {
"name": "Prevent Forced Logout",
"description": "Prevents Snapchat from logging you out when you login on another device"
} }
} }
}, },

View File

@ -32,4 +32,5 @@ class Experimental : ConfigContainer() {
"added_by_community", "added_by_community",
) { addNotices(FeatureNotice.BAN_RISK) } ) { addNotices(FeatureNotice.BAN_RISK) }
val disableComposerModules = string("disable_composer_modules") { requireRestart(); nativeHooks() } val disableComposerModules = string("disable_composer_modules") { requireRestart(); nativeHooks() }
val preventForcedLogout = boolean("prevent_forced_logout") { requireRestart(); addNotices(FeatureNotice.BAN_RISK, FeatureNotice.INTERNAL_BEHAVIOR); }
} }

View File

@ -0,0 +1,19 @@
package me.rhunk.snapenhance.core.features.impl.experiments
import android.content.Intent
import me.rhunk.snapenhance.core.features.Feature
import me.rhunk.snapenhance.core.features.FeatureLoadParams
import me.rhunk.snapenhance.core.util.hook.HookStage
import me.rhunk.snapenhance.core.util.hook.hook
class PreventForcedLogout : Feature("Prevent Forced Logout", loadParams = FeatureLoadParams.INIT_SYNC) {
override fun init() {
if (!context.config.experimental.preventForcedLogout.get()) return
findClass("com.snap.identity.service.ForcedLogoutBroadcastReceiver").hook("onReceive", HookStage.BEFORE) { param ->
val intent = param.arg<Intent>(1)
if (!intent.getBooleanExtra("forced", false)) return@hook
context.log.verbose("Prevent forced logout, reason=${intent.getStringExtra("reason")}")
param.setResult(null)
}
}
}

View File

@ -114,6 +114,7 @@ class FeatureManager(
DisableComposerModules::class, DisableComposerModules::class,
FideliusIndicator::class, FideliusIndicator::class,
EditTextOverride::class, EditTextOverride::class,
PreventForcedLogout::class,
) )
initializeFeatures() initializeFeatures()