import Cookies from 'js-cookie' const app = { state: { sidebar: { opened: !+Cookies.get('sidebarStatus') }, language: Cookies.get('language') || 'zh', visitedViews: [], cachedViews: [] }, mutations: { TOGGLE_SIDEBAR: state => { if (state.sidebar.opened) { Cookies.set('sidebarStatus', 1) } else { Cookies.set('sidebarStatus', 0) } state.sidebar.opened = !state.sidebar.opened }, SET_LANGUAGE: (state, language) => { state.language = language Cookies.set('language', language) }, ADD_VISITED_VIEWS: (state, view) => { if (state.visitedViews.some(v => v.path === view.path)) return state.visitedViews.push({ name: view.name, path: view.path, title: view.meta.title || 'no-name' }) if (!view.meta.noCache) { state.cachedViews.push(view.name) } }, DEL_VISITED_VIEWS: (state, view) => { for (const [i, v] of state.visitedViews.entries()) { if (v.path === view.path) { state.visitedViews.splice(i, 1) break } } for (const i of state.cachedViews) { if (i === view.name) { const index = state.cachedViews.indexOf(i) state.cachedViews.splice(index, 1) break } } } }, actions: { ToggleSideBar({ commit }) { commit('TOGGLE_SIDEBAR') }, setLanguage({ commit }, language) { commit('SET_LANGUAGE', language) }, addVisitedViews({ commit }, view) { commit('ADD_VISITED_VIEWS', view) }, delVisitedViews({ commit, state }, view) { return new Promise((resolve) => { commit('DEL_VISITED_VIEWS', view) resolve([...state.visitedViews]) }) } } } export default app