67 lines
1.5 KiB
JavaScript

import store from "store"
import defaultSettings from "schemas/defaultSettings.json"
class SettingsController {
constructor() {
this.storeKey = "app_settings"
this.settings = store.get(this.storeKey) ?? {}
this._setDefaultUndefined()
}
_setDefaultUndefined = () => {
Object.keys(defaultSettings).forEach((key) => {
const value = defaultSettings[key]
// Only set default if value is undefined
if (typeof this.settings[key] === "undefined") {
this.settings[key] = value
}
})
}
defaults = (key) => {
if (typeof key === "undefined") {
return defaultSettings
}
return defaultSettings[key]
}
is = (key, value) => {
return this.settings[key] === value
}
set = (key, value) => {
this.settings[key] = value
store.set(this.storeKey, this.settings)
window.app.eventBus.emit("setting.update", { key, value })
window.app.eventBus.emit(`setting.update.${key}`, value)
return this.settings
}
get = (key) => {
if (typeof key === "undefined") {
return this.settings
}
return this.settings[key]
}
}
export default {
key: "settings",
expose: [
{
initialization: [
(app, main) => {
app.settingsController = new SettingsController()
window.app.settings = app.settingsController
}
]
},
]
}