import axios from 'axios' 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), noAnimations: loadSetting('noAnimations', false) }, loginRedirect: null, user: { id: undefined, name: undefined, username: undefined, email: undefined } }, getters: { tabsDark: state => state.settings.dark || state.settings.coloredTabs, tabsColor: state => state.settings.coloredTabs ? 'primary' : '', tabsSliderColor: state => state.settings.coloredTabs ? 'white' : 'primary', user: state => state.user }, mutations: { setLoginRedirect: (state, value) => { state.loginRedirect = value }, saveSetting (state, { name, value }) { if (name in state.settings) state.settings[name] = value; localStorage.setItem('settings.' + name, value) }, setUser: (state, value) => { state.user.id = value.id state.user.name = value.name state.user.username = value.username state.user.email = value.email } }, actions: { loadUser (context) { axios.get('/api/users/current').then(response => { context.commit('setUser', response.data) }) } } }