commit cbf2d41d7a4653a5b75549c3a0d0d6dc9d7eaae5
parent 7aa75b6fc84ba819a879f7934c78d0e2050a673f
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Fri,  9 Jun 2023 00:49:58 +0200

feat: app appearance & disable spotlight

Diffstat:
Mapp/src/main/assets/lang/en_US.json | 4+++-
Mapp/src/main/kotlin/me/rhunk/snapenhance/ModContext.kt | 13+++----------
Mapp/src/main/kotlin/me/rhunk/snapenhance/SnapEnhance.kt | 2+-
Mapp/src/main/kotlin/me/rhunk/snapenhance/config/ConfigProperty.kt | 13+++++++++++++
Mapp/src/main/kotlin/me/rhunk/snapenhance/features/impl/ConfigEnumKeys.kt | 17+++++++++++++++++
5 files changed, 37 insertions(+), 12 deletions(-)

diff --git a/app/src/main/assets/lang/en_US.json b/app/src/main/assets/lang/en_US.json @@ -59,7 +59,9 @@ "longitude_value": "Longitude", "hide_ui_elements": "Hide UI Elements", "auto_updater": "Auto Updater", - "infinite_story_boost": "Infinite Story Boost" + "infinite_story_boost": "Infinite Story Boost", + "enable_app_appearance": "Enable App Appearance Settings", + "disable_spotlight": "Disable Spotlight" }, "option": { diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ModContext.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ModContext.kt @@ -80,17 +80,10 @@ class ModContext { } } - fun restartApp() { - androidContext.packageManager.getLaunchIntentForPackage( - Constants.SNAPCHAT_PACKAGE_NAME - )?.let { - val intent = Intent.makeRestartActivityTask(it.component) - androidContext.startActivity(intent) - Runtime.getRuntime().exit(0) + fun softRestartApp(saveSettings: Boolean = false) { + if (saveSettings) { + config.writeConfig() } - } - - fun softRestartApp() { val intent: Intent? = androidContext.packageManager.getLaunchIntentForPackage( Constants.SNAPCHAT_PACKAGE_NAME ) diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/SnapEnhance.kt b/app/src/main/kotlin/me/rhunk/snapenhance/SnapEnhance.kt @@ -35,7 +35,7 @@ class SnapEnhance { start { bridgeResult -> if (!bridgeResult) { Logger.xposedLog("Cannot connect to bridge service") - appContext.restartApp() + appContext.softRestartApp() return@start } runCatching { diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigProperty.kt b/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigProperty.kt @@ -258,6 +258,19 @@ enum class ConfigProperty( ConfigCategory.UI_TWEAKS, ConfigIntegerValue(20) ), + DISABLE_SPOTLIGHT( + "property.disable_spotlight", + "description.disable_spotlight", + ConfigCategory.UI_TWEAKS, + ConfigStateValue(false) + ), + ENABLE_APP_APPEARANCE( + "property.enable_app_appearance", + "description.enable_app_appearance", + ConfigCategory.UI_TWEAKS, + ConfigStateValue(false) + ), + // UPDATES AUTO_UPDATER( diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/ConfigEnumKeys.kt b/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/ConfigEnumKeys.kt @@ -1,8 +1,11 @@ package me.rhunk.snapenhance.features.impl +import android.annotation.SuppressLint 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.hook import me.rhunk.snapenhance.util.setObjectField import java.lang.reflect.Field import java.lang.reflect.Modifier @@ -33,6 +36,7 @@ class ConfigEnumKeys : Feature("Config enum keys", loadParams = FeatureLoadParam } } + @SuppressLint("PrivateApi") override fun onActivityCreate() { if (context.config.bool(ConfigProperty.NEW_MAP_UI)) { hookAllEnums(context.mappings.getMappedClass("enums", "PLUS")) { key, set -> @@ -62,5 +66,18 @@ class ConfigEnumKeys : Feature("Config enum keys", loadParams = FeatureLoadParam } } } + + ConfigProperty.ENABLE_APP_APPEARANCE.valueContainer.addPropertyChangeListener { + context.softRestartApp(true) + } + + val sharedPreferencesImpl = context.androidContext.classLoader.loadClass("android.app.SharedPreferencesImpl") + + sharedPreferencesImpl.methods.first { it.name == "getBoolean" }.hook(HookStage.BEFORE) { param -> + when (param.arg<String>(0)) { + "SIG_APP_APPEARANCE_SETTING" -> if (context.config.bool(ConfigProperty.ENABLE_APP_APPEARANCE)) param.setResult(true) + "SPOTLIGHT_5TH_TAB_ENABLED" -> if (context.config.bool(ConfigProperty.DISABLE_SPOTLIGHT)) param.setResult(false) + } + } } } \ No newline at end of file