/* * Copyright (c) Kuba SzczodrzyƄski 2019-11-26. */ package pl.szczodrzynski.edziennik.config import com.google.gson.JsonObject import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.BuildConfig import pl.szczodrzynski.edziennik.config.utils.* import pl.szczodrzynski.edziennik.data.api.szkolny.response.Update import pl.szczodrzynski.edziennik.data.db.AppDb @Suppress("RemoveExplicitTypeArguments") class Config(db: AppDb) : BaseConfig(db) { companion object { const val DATA_VERSION = 12 } private val profileConfigs: HashMap = hashMapOf() val ui by lazy { ConfigUI(this) } val sync by lazy { ConfigSync(this) } val timetable by lazy { ConfigTimetable(this) } val grades by lazy { ConfigGrades(this) } var dataVersion by config(DATA_VERSION) var hash by config("") var lastProfileId by config(0) var loginFinished by config(false) var privacyPolicyAccepted by config(false) var update by config(null) var updatesChannel by config("release") var devMode by config("debugMode", null) var devModePassword by config(null) var enableChucker by config(null) var apiAvailabilityCheck by config(true) var apiInvalidCert by config(null) var apiKeyCustom by config(null) var appInstalledTime by config(0L) var appRateSnackbarTime by config(0L) var appVersion by config(BuildConfig.VERSION_CODE) var validation by config(null, "buildValidation") var archiverEnabled by config(true) var runSync by config(false) var widgetConfigs by config { JsonObject() } fun migrate(app: App) { if (dataVersion < DATA_VERSION || hash == "") // migrate old data version OR freshly installed app (or updated from 3.x) ConfigMigration(app, this) } operator fun get(profileId: Int): ProfileConfig { return profileConfigs[profileId] ?: ProfileConfig(db, profileId, entries).also { profileConfigs[profileId] = it } } }