mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-06-13 05:37:48 +02:00
refactor: ModConfig lateInit
This commit is contained in:
@ -57,7 +57,7 @@ class RemoteSideContext(
|
||||
set(value) { _activity?.clear(); _activity = WeakReference(value) }
|
||||
|
||||
val sharedPreferences: SharedPreferences get() = androidContext.getSharedPreferences("prefs", 0)
|
||||
val config = ModConfig()
|
||||
val config = ModConfig(androidContext)
|
||||
val translation = LocaleWrapper()
|
||||
val mappings = MappingsWrapper()
|
||||
val downloadTaskManager = DownloadTaskManager()
|
||||
|
@ -1,5 +1,6 @@
|
||||
package me.rhunk.snapenhance.common.config
|
||||
|
||||
import android.content.Context
|
||||
import com.google.gson.JsonObject
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
@ -83,6 +84,12 @@ open class ConfigContainer(
|
||||
}
|
||||
}
|
||||
|
||||
open fun lateInit(context: Context) {
|
||||
properties.values.filter { it.getNullable() is ConfigContainer }.forEach {
|
||||
(it.get() as ConfigContainer).lateInit(context)
|
||||
}
|
||||
}
|
||||
|
||||
operator fun getValue(t: Any?, property: KProperty<*>) = this.globalState
|
||||
operator fun setValue(t: Any?, property: KProperty<*>, t1: Boolean?) { this.globalState = t1 }
|
||||
}
|
@ -12,7 +12,9 @@ import me.rhunk.snapenhance.common.config.impl.RootConfig
|
||||
import me.rhunk.snapenhance.common.logger.AbstractLogger
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
class ModConfig {
|
||||
class ModConfig(
|
||||
private val context: Context
|
||||
) {
|
||||
var locale: String = LocaleWrapper.DEFAULT_LOCALE
|
||||
|
||||
private val gson: Gson = GsonBuilder().setPrettyPrinting().create()
|
||||
@ -24,8 +26,10 @@ class ModConfig {
|
||||
lateinit var root: RootConfig
|
||||
private set
|
||||
|
||||
private fun createRootConfig() = RootConfig().apply { lateInit(context) }
|
||||
|
||||
private fun load() {
|
||||
root = RootConfig()
|
||||
root = createRootConfig()
|
||||
wasPresent = file.isFileExists()
|
||||
if (!file.isFileExists()) {
|
||||
writeConfig()
|
||||
@ -95,7 +99,7 @@ class ModConfig {
|
||||
|
||||
configStateListener?.also {
|
||||
runCatching {
|
||||
compareDiff(RootConfig().apply {
|
||||
compareDiff(createRootConfig().apply {
|
||||
fromJson(gson.fromJson(file.read().toString(Charsets.UTF_8), JsonObject::class.java))
|
||||
}, root)
|
||||
|
||||
|
@ -36,10 +36,11 @@ import me.rhunk.snapenhance.nativelib.NativeLib
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class ModContext {
|
||||
class ModContext(
|
||||
val androidContext: Context
|
||||
) {
|
||||
val coroutineScope = CoroutineScope(Dispatchers.IO)
|
||||
|
||||
lateinit var androidContext: Context
|
||||
lateinit var bridgeClient: BridgeClient
|
||||
var mainActivity: Activity? = null
|
||||
|
||||
@ -47,7 +48,7 @@ class ModContext {
|
||||
val resources: Resources get() = androidContext.resources
|
||||
val gson: Gson = GsonBuilder().create()
|
||||
|
||||
private val _config = ModConfig()
|
||||
private val _config = ModConfig(androidContext)
|
||||
val config by _config::root
|
||||
val log by lazy { CoreLogger(this.bridgeClient) }
|
||||
val translation = LocaleWrapper()
|
||||
|
@ -33,7 +33,7 @@ class SnapEnhance {
|
||||
SnapClassCache(classLoader)
|
||||
}
|
||||
}
|
||||
private val appContext = ModContext()
|
||||
private lateinit var appContext: ModContext
|
||||
private var isBridgeInitialized = false
|
||||
private var isActivityPaused = false
|
||||
|
||||
@ -47,9 +47,11 @@ class SnapEnhance {
|
||||
|
||||
init {
|
||||
Application::class.java.hook("attach", HookStage.BEFORE) { param ->
|
||||
appContext.apply {
|
||||
appContext = ModContext(
|
||||
androidContext = param.arg<Context>(0).also { classLoader = it.classLoader }
|
||||
bridgeClient = BridgeClient(appContext)
|
||||
)
|
||||
appContext.apply {
|
||||
bridgeClient = BridgeClient(this)
|
||||
bridgeClient.apply {
|
||||
connect(
|
||||
onFailure = {
|
||||
|
Reference in New Issue
Block a user