refactor: debug properties

This commit is contained in:
rhunk
2024-03-10 12:37:11 +01:00
parent 4ecf5f8177
commit 97806d693e
13 changed files with 74 additions and 39 deletions

View File

@ -24,8 +24,8 @@ import me.rhunk.snapenhance.core.event.EventBus
import me.rhunk.snapenhance.core.event.EventDispatcher
import me.rhunk.snapenhance.core.features.Feature
import me.rhunk.snapenhance.core.logger.CoreLogger
import me.rhunk.snapenhance.core.manager.impl.ActionManager
import me.rhunk.snapenhance.core.manager.impl.FeatureManager
import me.rhunk.snapenhance.core.action.ActionManager
import me.rhunk.snapenhance.core.features.FeatureManager
import me.rhunk.snapenhance.core.messaging.CoreMessagingBridge
import me.rhunk.snapenhance.core.messaging.MessageSender
import me.rhunk.snapenhance.core.scripting.CoreScriptRuntime

View File

@ -132,7 +132,6 @@ class SnapEnhance {
}
reloadConfig()
actionManager.init()
initConfigListener()
initWidgetListener()
initNative()
@ -175,7 +174,10 @@ class SnapEnhance {
private fun initNative() {
// don't initialize native when not logged in
if (appContext.androidContext.getSharedPreferences("user_session_shared_pref", 0).getString("key_user_id", null) == null) return
if (
appContext.androidContext.getSharedPreferences("user_session_shared_pref", 0).getString("key_user_id", null) == null &&
appContext.bridgeClient.getDebugProp("force_native_load", null) != "true"
) return
if (appContext.config.experimental.nativeHooks.globalState != true) return
lateinit var unhook: () -> Unit

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.core.manager.impl
package me.rhunk.snapenhance.core.action
import android.content.Intent
import me.rhunk.snapenhance.common.action.EnumAction
@ -7,11 +7,10 @@ import me.rhunk.snapenhance.core.action.impl.BulkMessagingAction
import me.rhunk.snapenhance.core.action.impl.CleanCache
import me.rhunk.snapenhance.core.action.impl.ExportChatMessages
import me.rhunk.snapenhance.core.action.impl.ExportMemories
import me.rhunk.snapenhance.core.manager.Manager
class ActionManager(
private val modContext: ModContext,
) : Manager {
) {
private val actions by lazy {
mapOf(
@ -26,9 +25,6 @@ class ActionManager(
}.toMap().toMutableMap()
}
override fun init() {
}
fun onNewIntent(intent: Intent?) {
val action = intent?.getStringExtra(EnumAction.ACTION_PARAMETER) ?: return
intent.removeExtra(EnumAction.ACTION_PARAMETER)

View File

@ -209,4 +209,6 @@ class BridgeClient(
fun closeSettingsOverlay() = safeServiceCall { service.closeSettingsOverlay() }
fun registerConfigStateListener(listener: ConfigStateListener) = safeServiceCall { service.registerConfigStateListener(listener) }
fun getDebugProp(name: String, defaultValue: String? = null) = safeServiceCall { service.getDebugProp(name, defaultValue) }
}

View File

@ -17,7 +17,6 @@ import me.rhunk.snapenhance.common.util.ktx.getInteger
import me.rhunk.snapenhance.common.util.ktx.getStringOrNull
import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
import me.rhunk.snapenhance.core.ModContext
import me.rhunk.snapenhance.core.manager.Manager
import me.rhunk.snapenhance.nativelib.NativeLib
@ -30,7 +29,7 @@ enum class DatabaseType(
class DatabaseAccess(
private val context: ModContext
) : Manager {
) {
private val openedDatabases = mutableMapOf<DatabaseType, SQLiteDatabase>()
private fun useDatabase(database: DatabaseType, writeMode: Boolean = false): SQLiteDatabase? {
@ -118,7 +117,7 @@ class DatabaseAccess(
fun hasMain(): Boolean = useDatabase(DatabaseType.MAIN)?.isOpen == true
fun hasArroyo(): Boolean = useDatabase(DatabaseType.ARROYO)?.isOpen == true
override fun init() {
fun init() {
// perform integrity check on databases
DatabaseType.entries.forEach { type ->
useDatabase(type, writeMode = true)?.apply {

View File

@ -7,7 +7,6 @@ import android.view.ViewGroup.LayoutParams
import me.rhunk.snapenhance.common.util.snap.SnapWidgetBroadcastReceiverHelper
import me.rhunk.snapenhance.core.ModContext
import me.rhunk.snapenhance.core.event.events.impl.*
import me.rhunk.snapenhance.core.manager.Manager
import me.rhunk.snapenhance.core.util.hook.HookStage
import me.rhunk.snapenhance.core.util.hook.Hooker
import me.rhunk.snapenhance.core.util.hook.hook
@ -23,7 +22,7 @@ import java.nio.ByteBuffer
class EventDispatcher(
private val context: ModContext
) : Manager {
) {
private fun hookViewBinder() {
context.mappings.useMapper(ViewBinderMapper::class) {
val cachedHooks = mutableListOf<String>()
@ -60,8 +59,7 @@ class EventDispatcher(
}
override fun init() {
fun init() {
context.classCache.conversationManager.hook("sendMessageWithContent", HookStage.BEFORE) { param ->
context.event.post(SendMessageWithContentEvent(
destinations = MessageDestinations(param.arg(0)),

View File

@ -1,12 +1,9 @@
package me.rhunk.snapenhance.core.manager.impl
package me.rhunk.snapenhance.core.features
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import me.rhunk.snapenhance.core.ModContext
import me.rhunk.snapenhance.core.features.Feature
import me.rhunk.snapenhance.core.features.FeatureLoadParams
import me.rhunk.snapenhance.core.features.MessagingRuleFeature
import me.rhunk.snapenhance.core.features.impl.ConfigurationOverride
import me.rhunk.snapenhance.core.features.impl.MixerStories
import me.rhunk.snapenhance.core.features.impl.OperaViewerParamsOverride
@ -16,7 +13,9 @@ import me.rhunk.snapenhance.core.features.impl.downloader.ProfilePictureDownload
import me.rhunk.snapenhance.core.features.impl.experiments.*
import me.rhunk.snapenhance.core.features.impl.global.*
import me.rhunk.snapenhance.core.features.impl.messaging.*
import me.rhunk.snapenhance.core.features.impl.spying.*
import me.rhunk.snapenhance.core.features.impl.spying.HalfSwipeNotifier
import me.rhunk.snapenhance.core.features.impl.spying.MessageLogger
import me.rhunk.snapenhance.core.features.impl.spying.StealthMode
import me.rhunk.snapenhance.core.features.impl.tweaks.BypassScreenshotDetection
import me.rhunk.snapenhance.core.features.impl.tweaks.CameraTweaks
import me.rhunk.snapenhance.core.features.impl.tweaks.DisablePermissionRequests
@ -24,17 +23,21 @@ import me.rhunk.snapenhance.core.features.impl.tweaks.PreventMessageListAutoScro
import me.rhunk.snapenhance.core.features.impl.tweaks.UnsaveableMessages
import me.rhunk.snapenhance.core.features.impl.ui.*
import me.rhunk.snapenhance.core.logger.CoreLogger
import me.rhunk.snapenhance.core.manager.Manager
import me.rhunk.snapenhance.core.ui.menu.MenuViewInjector
import kotlin.reflect.KClass
import kotlin.system.measureTimeMillis
class FeatureManager(
private val context: ModContext
) : Manager {
) {
private val features = mutableMapOf<KClass<out Feature>, Feature>()
private fun register(vararg featureList: Feature) {
if (context.bridgeClient.getDebugProp("disable_feature_loading") == "true") {
context.log.warn("Feature loading is disabled")
return
}
runBlocking {
featureList.forEach { feature ->
launch(Dispatchers.IO) {
@ -58,7 +61,7 @@ class FeatureManager(
fun getRuleFeatures() = features.values.filterIsInstance<MessagingRuleFeature>().sortedBy { it.ruleType.ordinal }
override fun init() {
fun init() {
register(
EndToEndEncryption(),
ScopeSync(),
@ -174,7 +177,7 @@ class FeatureManager(
}
}
override fun onActivityCreate() {
fun onActivityCreate() {
measureTimeMillis {
initFeatures(
FeatureLoadParams.ACTIVITY_CREATE_SYNC,

View File

@ -1,6 +0,0 @@
package me.rhunk.snapenhance.core.manager
interface Manager {
fun init() {}
fun onActivityCreate() {}
}