mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-10 02:54:15 +00:00
67 lines
1.5 KiB
JavaScript
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
|
|
}
|
|
]
|
|
},
|
|
]
|
|
|
|
} |