86 lines
2.2 KiB
JavaScript
86 lines
2.2 KiB
JavaScript
const tagsView = {
|
|
state: {
|
|
visitedViews: [],
|
|
cachedViews: []
|
|
},
|
|
mutations: {
|
|
ADD_VISITED_VIEWS: (state, view) => {
|
|
if (state.visitedViews.some(v => v.path === view.path)) return
|
|
|
|
if (view.showInVisitedViews) {
|
|
state.visitedViews.push({
|
|
name: view.name,
|
|
path: view.path,
|
|
title: view.meta.title || 'no-name'
|
|
})
|
|
}
|
|
|
|
if (!view.meta.noCache) {
|
|
const cachedViews = [...state.cachedViews]
|
|
cachedViews.push(view.name)
|
|
state.cachedViews = Array.from(new Set([...cachedViews]))
|
|
}
|
|
console.log(state.cachedViews)
|
|
},
|
|
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
|
|
}
|
|
}
|
|
},
|
|
DEL_OTHERS_VIEWS: (state, view) => {
|
|
for (const [i, v] of state.visitedViews.entries()) {
|
|
if (v.path === view.path) {
|
|
state.visitedViews = state.visitedViews.slice(i, i + 1)
|
|
break
|
|
}
|
|
}
|
|
for (const i of state.cachedViews) {
|
|
if (i === view.name) {
|
|
const index = state.cachedViews.indexOf(i)
|
|
state.cachedViews = state.cachedViews.slice(index, i + 1)
|
|
break
|
|
}
|
|
}
|
|
},
|
|
DEL_ALL_VIEWS: (state) => {
|
|
state.visitedViews = []
|
|
state.cachedViews = []
|
|
}
|
|
},
|
|
actions: {
|
|
addVisitedViews({ commit }, view) {
|
|
commit('ADD_VISITED_VIEWS', view)
|
|
},
|
|
delVisitedViews({ commit, state }, view) {
|
|
return new Promise((resolve) => {
|
|
commit('DEL_VISITED_VIEWS', view)
|
|
resolve([...state.visitedViews])
|
|
})
|
|
},
|
|
delOthersViews({ commit, state }, view) {
|
|
return new Promise((resolve) => {
|
|
commit('DEL_OTHERS_VIEWS', view)
|
|
resolve([...state.visitedViews])
|
|
})
|
|
},
|
|
delAllViews({ commit, state }) {
|
|
return new Promise((resolve) => {
|
|
commit('DEL_ALL_VIEWS')
|
|
resolve([...state.visitedViews])
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
export default tagsView
|