function loadSetting (name, defaultValue) { const value = localStorage.getItem('settings.' + name) switch (typeof defaultValue) { case 'boolean': return value === 'true' ? true : (value === 'false' ? false : defaultValue) case 'number': return value === null || isNaN(value) ? defaultValue : Number(value) default: return value === null ? defaultValue : value } } export default { state: { settings: { locale: loadSetting('locale', 'en'), dark: loadSetting('dark', true), coloredTabs: loadSetting('coloredTabs', false), clipped: loadSetting('clipped', true), mini: loadSetting('mini', true) }, snackbars: [] }, getters: { tabsDark: state => state.settings.dark || state.settings.coloredTabs, tabsColor: state => state.settings.coloredTabs ? 'primary' : '', tabsSliderColor: state => state.settings.coloredTabs ? 'white' : 'primary', nextSnackbar (state) { if (state.snackbars) return state.snackbars[0] else return '' } }, mutations: { saveSetting (state, { name, value }) { if (name in state.settings) state.settings[name] = value; localStorage.setItem('settings.' + name, value) }, shiftSnackbars (state) { state.snackbars.shift() }, newSnackbar (state, text) { state.snackbars.push(text) } } }