2019-09-24 15:18:29 +00:00
|
|
|
import Vue from 'vue'
|
|
|
|
import Vuex, { Store } from 'vuex'
|
|
|
|
import Mutations from './mutations'
|
|
|
|
import Actions from './actions'
|
2019-08-29 09:05:29 +00:00
|
|
|
|
2019-09-24 15:18:29 +00:00
|
|
|
Vue.use(Vuex)
|
2019-08-29 09:05:29 +00:00
|
|
|
|
2019-09-24 15:18:29 +00:00
|
|
|
export { mutations } from './mutations'
|
2019-08-29 09:05:29 +00:00
|
|
|
|
2019-09-24 15:18:29 +00:00
|
|
|
export { actions } from './actions'
|
2019-08-29 09:05:29 +00:00
|
|
|
|
|
|
|
export default new Store({
|
|
|
|
mutations: Mutations,
|
|
|
|
actions: Actions,
|
|
|
|
state: {
|
|
|
|
fetchState: {
|
|
|
|
page: 0,
|
|
|
|
query: {},
|
2019-12-10 21:33:54 +00:00
|
|
|
reachedEnd: false,
|
2019-08-29 09:05:29 +00:00
|
|
|
},
|
|
|
|
loading: {
|
|
|
|
tags: false,
|
|
|
|
folders: false,
|
|
|
|
bookmarks: false,
|
|
|
|
createBookmark: false,
|
|
|
|
saveBookmark: false,
|
|
|
|
createFolder: false,
|
2019-12-10 21:33:54 +00:00
|
|
|
saveFolder: false,
|
2019-08-29 09:05:29 +00:00
|
|
|
},
|
|
|
|
error: null,
|
|
|
|
settings: {
|
|
|
|
viewMode: 'list',
|
2019-12-10 21:33:54 +00:00
|
|
|
sorting: 'lastmodified',
|
2019-08-29 09:05:29 +00:00
|
|
|
},
|
|
|
|
bookmarks: [],
|
|
|
|
bookmarksById: {},
|
|
|
|
tags: [],
|
|
|
|
folders: [],
|
|
|
|
foldersById: {},
|
|
|
|
selection: {
|
|
|
|
folders: [],
|
2019-12-10 21:33:54 +00:00
|
|
|
bookmarks: [],
|
2019-08-29 09:05:29 +00:00
|
|
|
},
|
|
|
|
displayNewBookmark: false,
|
|
|
|
displayNewFolder: false,
|
|
|
|
displayMoveDialog: false,
|
|
|
|
sidebar: null,
|
2019-12-10 21:33:54 +00:00
|
|
|
viewMode: 'list',
|
2019-08-29 09:05:29 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
getters: {
|
|
|
|
getBookmark: state => id => {
|
2019-09-24 15:18:29 +00:00
|
|
|
return state.bookmarksById[id]
|
2019-08-29 09:05:29 +00:00
|
|
|
},
|
|
|
|
getFolder: state => id => {
|
|
|
|
if (Number(id) === -1) {
|
2019-09-24 15:18:29 +00:00
|
|
|
return [{ id: '-1', children: state.folders }]
|
2019-08-29 09:05:29 +00:00
|
|
|
}
|
2019-09-24 15:18:29 +00:00
|
|
|
return findFolder(id, state.folders)
|
2019-12-10 21:33:54 +00:00
|
|
|
},
|
|
|
|
},
|
2019-09-24 15:18:29 +00:00
|
|
|
})
|
2019-08-29 09:05:29 +00:00
|
|
|
|
|
|
|
function findFolder(id, children) {
|
2019-09-24 15:18:29 +00:00
|
|
|
if (!children || !children.length) return []
|
2019-12-10 21:33:54 +00:00
|
|
|
const folders = children.filter(folder => Number(folder.id) === Number(id))
|
2019-08-29 09:05:29 +00:00
|
|
|
if (folders.length) {
|
2019-09-24 15:18:29 +00:00
|
|
|
return folders
|
2019-08-29 09:05:29 +00:00
|
|
|
} else {
|
2019-12-10 21:33:54 +00:00
|
|
|
for (const child of children) {
|
|
|
|
const folders = findFolder(id, child.children)
|
2019-08-29 09:05:29 +00:00
|
|
|
if (folders.length) {
|
2019-09-24 15:18:29 +00:00
|
|
|
folders.push(child)
|
|
|
|
return folders
|
2019-08-29 09:05:29 +00:00
|
|
|
}
|
|
|
|
}
|
2019-09-24 15:18:29 +00:00
|
|
|
return []
|
2019-08-29 09:05:29 +00:00
|
|
|
}
|
|
|
|
}
|