pleroma-fe/src/stores/local_config.js

50 lines
1.2 KiB
JavaScript
Raw Normal View History

2026-02-23 20:14:39 +02:00
import { cloneDeep, set } from 'lodash'
import { defineStore } from 'pinia'
import { toRaw } from 'vue'
import { useInstanceStore } from 'src/stores/instance'
import { defaultState as configDefaultState } from 'src/modules/default_config_state'
export const defaultState = {
prefsStorage: {
...configDefaultState,
2026-02-23 20:14:39 +02:00
},
2026-02-24 21:16:38 +02:00
tempStorage: {
...configDefaultState
}
}
export const useLocalConfigStore = defineStore('local_config', {
state() {
return cloneDeep(defaultState)
},
actions: {
set({ path, value }) {
set(this.prefsStorage, path, value)
},
2026-02-24 21:16:38 +02:00
setTemporarily({ path, value }) {
set(this.tempStorage, path, value)
},
unsetTemporarily({ path, value }) {
set(this.tempStorage, path, undefined)
},
unset({ path, value }) {
set(this.prefsStorage, path, undefined)
},
clearSyncConfig() {
const blankState = { ...cloneDeep(defaultState) }
Object.keys(this).forEach((k) => {
this.prefsStorage[k] = blankState[k]
})
},
},
persist: {
afterLoad(state) {
2026-02-24 21:16:38 +02:00
return {
prefsStorage: state.prefsStorage ?? { ...configDefaultState },
2026-02-24 21:16:38 +02:00
tempStorage: { ...configDefaultState },
}
},
},
})