use localSetting to store a global state of user choices

This commit is contained in:
lesion
2023-02-03 21:55:33 +01:00
parent 3eacc7ea33
commit f2376997b8
6 changed files with 60 additions and 61 deletions

View File

@@ -1,6 +1,10 @@
import dayjs from 'dayjs'
export const state = () => ({
localSettings : {
hide_thumbs: null,
'theme.is_dark': null
},
settings: {
instance_timezone: 'Europe/Rome',
instance_name: '',
@@ -21,7 +25,10 @@ export const state = () => ({
enable_trusted_instances: true,
trusted_instances: [],
trusted_instances_label: '',
footerLinks: []
footerLinks: [],
hide_thumbs: false,
'theme.is_dark': true,
hide_calendar: false
},
filter: {
query: '',
@@ -32,6 +39,15 @@ export const state = () => ({
events: []
})
export const getters = {
hide_thumbs (state) {
return (state.localSettings['hide_thumbs'] === null) ? state.settings.hide_thumbs : state.localSettings.hide_thumbs
},
is_dark (state) {
return (state.localSettings['theme.is_dark'] === null) ? state.settings['theme.is_dark'] : state.localSettings['theme.is_dark']
}
}
export const mutations = {
setSettings (state, settings) {
state.settings = settings
@@ -39,6 +55,9 @@ export const mutations = {
setSetting (state, setting) {
state.settings[setting.key] = setting.value
},
setLocalSetting(state, setting) {
state.localSettings[setting.key] = setting.value
},
setAnnouncements (state, announcements) {
state.announcements = announcements
},
@@ -53,13 +72,17 @@ export const mutations = {
export const actions = {
// this method is called server side only for each request for nuxt
// we use it to get configuration from db, set locale, etc...
nuxtServerInit ({ commit }, { _req, res }) {
nuxtServerInit ({ commit }, { res, app }) {
if (res.locals && res.locals.settings) {
commit('setSettings', res.locals.settings)
}
commit('setFilter', { type: 'show_recurrent',
value: res.locals.settings.allow_recurrent_event && res.locals.settings.recurrent_event_visible })
commit('setLocalSetting', { key: 'hide_thumbs', value: app.$cookies.get('hide_thumbs') })
commit('setLocalSetting', { key: 'theme.is_dark', value: app.$cookies.get('theme.is_dark') })
if (res.locals.status === 'READY') {
commit('setAnnouncements', res.locals.announcements)
}
@@ -75,6 +98,13 @@ export const actions = {
await this.$axios.$post('/settings', setting)
commit('setSetting', setting)
},
async setLocalSetting ({ commit }, setting) {
this.$cookies.set(setting.key, setting.value, {
path: '/',
maxAge: 60 * 60 * 24 * 7
})
commit('setLocalSetting', setting)
},
setFilter ({ commit }, [type, value]) {
commit('setFilter', { type, value })
},