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'
|
2020-03-28 17:15:59 +00:00
|
|
|
import { privateRoutes, publicRoutes } from '../router'
|
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: {
|
2020-03-28 17:15:59 +00:00
|
|
|
public: false,
|
|
|
|
authToken: null,
|
2019-08-29 09:05:29 +00:00
|
|
|
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,
|
2020-03-28 17:15:59 +00:00
|
|
|
notification: null,
|
2019-08-29 09:05:29 +00:00
|
|
|
settings: {
|
|
|
|
viewMode: 'list',
|
2019-12-10 21:33:54 +00:00
|
|
|
sorting: 'lastmodified',
|
2020-04-08 14:48:16 +00:00
|
|
|
limit: 0,
|
2019-08-29 09:05:29 +00:00
|
|
|
},
|
|
|
|
bookmarks: [],
|
|
|
|
bookmarksById: {},
|
2020-03-28 17:15:59 +00:00
|
|
|
sharesById: {},
|
2019-08-29 09:05:29 +00:00
|
|
|
tags: [],
|
|
|
|
folders: [],
|
|
|
|
foldersById: {},
|
2020-03-28 17:15:59 +00:00
|
|
|
tokensByFolder: {},
|
2020-04-08 14:48:16 +00:00
|
|
|
countsByFolder: {},
|
2019-08-29 09:05:29 +00:00
|
|
|
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
|
|
|
},
|
2020-03-28 17:15:59 +00:00
|
|
|
getSharesOfFolder: state => folderId => {
|
2020-03-30 12:31:54 +00:00
|
|
|
return Object.values(state.sharesById).filter(share => share.folderId === folderId)
|
2020-03-28 17:15:59 +00:00
|
|
|
},
|
|
|
|
getTokenOfFolder: state => folderId => {
|
|
|
|
return state.tokensByFolder[folderId]
|
|
|
|
},
|
|
|
|
getRoutes: state => () => {
|
|
|
|
if (state.public) {
|
|
|
|
return publicRoutes
|
|
|
|
}
|
|
|
|
return privateRoutes
|
|
|
|
},
|
2020-03-31 12:51:16 +00:00
|
|
|
getPermissionsForFolder: (state, getters) => folderId => {
|
|
|
|
const path = getters.getFolder(folderId)
|
|
|
|
for (let i = 0; i < path.length; i++) {
|
|
|
|
const shares = getters.getSharesOfFolder(path[i].id)
|
|
|
|
if (shares.length) {
|
|
|
|
return shares[0]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return {}
|
|
|
|
},
|
|
|
|
getPermissionsForBookmark: (state, getters) => bookmarkId => {
|
|
|
|
const bookmark = getters.getBookmark(bookmarkId)
|
|
|
|
if (!bookmark) {
|
|
|
|
return {}
|
|
|
|
}
|
|
|
|
return getters.getPermissionsForFolder(bookmark.folders[0])
|
|
|
|
},
|
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
|
|
|
}
|
|
|
|
}
|