mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-06 02:33:48 +00:00
163 lines
4.6 KiB
JavaScript
Vendored
163 lines
4.6 KiB
JavaScript
Vendored
import axios from 'axios'
|
|
import router from '@/router'
|
|
import Vue from 'vue'
|
|
|
|
const defaultState = {
|
|
permission: 'master', // master | editor | visitor
|
|
user: undefined,
|
|
}
|
|
|
|
const actions = {
|
|
getAppData: ({commit, getters}) => {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
axios
|
|
.get(getters.api + '/user' + getters.sorting.URI)
|
|
.then((response) => {
|
|
resolve(response)
|
|
|
|
// Redirect user if is logged
|
|
if (router.currentRoute.name === 'SignIn')
|
|
router.push({name: 'Files'})
|
|
|
|
commit('RETRIEVE_USER', response.data)
|
|
|
|
}).catch((error) => {
|
|
reject(error)
|
|
|
|
// Redirect if unauthenticated
|
|
if ([401, 403].includes(error.response.status)) {
|
|
|
|
commit('SET_AUTHORIZED', false)
|
|
//router.push({name: 'SignIn'})
|
|
}
|
|
}
|
|
)
|
|
})
|
|
},
|
|
logOut: ({getters, commit}) => {
|
|
|
|
let popup = setTimeout(() => {
|
|
commit('PROCESSING_POPUP', {
|
|
title: 'Logging Out',
|
|
message: 'Wait a second...',
|
|
})
|
|
}, 300)
|
|
|
|
axios
|
|
.post('/logout')
|
|
.then(() => {
|
|
clearTimeout(popup)
|
|
commit('DESTROY_DATA')
|
|
|
|
router.push({name: 'SignIn'})
|
|
})
|
|
},
|
|
addToFavourites: (context, folder) => {
|
|
let addFavourites = []
|
|
let items = [folder]
|
|
|
|
// If dont coming single folder get folders to add to favourites from fileInfoDetail
|
|
if (!folder)
|
|
items = context.getters.fileInfoDetail
|
|
|
|
items.forEach((data) => {
|
|
if (data.type === 'folder') {
|
|
|
|
if (context.getters.user.data.relationships.favourites.data.attributes.folders.find(folder => folder.id === data.id)) return
|
|
|
|
addFavourites.push({
|
|
id: data.id
|
|
})
|
|
}
|
|
})
|
|
|
|
// If dont coming single folder clear the selected folders in fileInfoDetail
|
|
if (!folder) {
|
|
context.commit('CLEAR_FILEINFO_DETAIL')
|
|
}
|
|
|
|
let pushToFavorites = []
|
|
|
|
// Check is favorites already don't include some of pushed folders
|
|
items.map(data => {
|
|
if (!context.getters.user.data.relationships.favourites.data.attributes.folders.find(folder => folder.id === data.id)) {
|
|
pushToFavorites.push(data)
|
|
}
|
|
})
|
|
|
|
// Add to storage
|
|
context.commit('ADD_TO_FAVOURITES', pushToFavorites)
|
|
|
|
axios
|
|
.post(context.getters.api + '/folders/favourites', {
|
|
folders: addFavourites
|
|
})
|
|
.catch(() => {
|
|
Vue.prototype.$isSomethingWrong()
|
|
})
|
|
},
|
|
removeFromFavourites: ({commit, getters, dispatch}, folder) => {
|
|
|
|
// Remove from storage
|
|
commit('REMOVE_ITEM_FROM_FAVOURITES', folder)
|
|
|
|
axios
|
|
.post(getters.api + '/folders/favourites/' + folder.id, {
|
|
_method: 'delete'
|
|
})
|
|
.catch(() => {
|
|
Vue.prototype.$isSomethingWrong()
|
|
})
|
|
},
|
|
}
|
|
|
|
const mutations = {
|
|
RETRIEVE_USER(state, user) {
|
|
state.user = user
|
|
},
|
|
SET_PERMISSION(state, role) {
|
|
state.permission = role
|
|
},
|
|
DESTROY_DATA(state) {
|
|
state.app = undefined
|
|
},
|
|
ADD_TO_FAVOURITES(state, folder) {
|
|
folder.forEach(item => {
|
|
state.user.data.relationships.favourites.data.attributes.folders.push({
|
|
id: item.id,
|
|
name: item.name,
|
|
type: item.type,
|
|
})
|
|
})
|
|
},
|
|
UPDATE_NAME(state, name) {
|
|
state.user.data.relationships.settings.data.attributes.name = name
|
|
},
|
|
UPDATE_AVATAR(state, avatar) {
|
|
state.user.data.relationships.settings.data.attributes.avatar = avatar
|
|
},
|
|
REMOVE_ITEM_FROM_FAVOURITES(state, item) {
|
|
state.user.data.relationships.favourites.data.attributes.folders = state.user.data.relationships.favourites.data.attributes.folders.filter(folder => folder.id !== item.id)
|
|
},
|
|
UPDATE_NAME_IN_FAVOURITES(state, data) {
|
|
state.user.data.relationships.favourites.data.attributes.folders.find(folder => {
|
|
if (folder.id === data.id) {
|
|
folder.name = data.name
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
const getters = {
|
|
permission: state => state.permission,
|
|
user: state => state.user,
|
|
}
|
|
|
|
export default {
|
|
state: defaultState,
|
|
getters,
|
|
actions,
|
|
mutations
|
|
}
|