refactor: ModConfig lateInit

This commit is contained in:
rhunk
2023-10-25 03:20:48 +02:00
parent a4b7432006
commit be4a0f5ccd
5 changed files with 24 additions and 10 deletions

View File

@ -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 }
}

View File

@ -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)