Files
vuefilemanager/resources/js/store/modules/userAuth.js
Peter Papp 80019b822d Merge remote-tracking branch 'origin/master' into oasis
# Conflicts:
#	public/chunks/admin-account.js
#	public/chunks/admin.js
#	public/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js
#	public/chunks/app-language.js
#	public/chunks/app-settings.js
#	public/chunks/app-setup.js
#	public/chunks/billings-detail.js
#	public/chunks/dashboard.js
#	public/chunks/database.js
#	public/chunks/environment-setup.js
#	public/chunks/files.js
#	public/chunks/files~chunks/shared-files~chunks/shared/file-browser.js
#	public/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.js
#	public/chunks/homepage.js
#	public/chunks/installation-disclaimer.js
#	public/chunks/invoices.js
#	public/chunks/page-edit.js
#	public/chunks/pages.js
#	public/chunks/plan-create.js
#	public/chunks/plan-settings.js
#	public/chunks/plan-subscribers.js
#	public/chunks/plan.js
#	public/chunks/plans.js
#	public/chunks/platform.js
#	public/chunks/profile.js
#	public/chunks/profile~chunks/settings-password.js
#	public/chunks/purchase-code.js
#	public/chunks/settings-create-payment-methods.js
#	public/chunks/settings-invoices.js
#	public/chunks/settings-payment-methods.js
#	public/chunks/settings-storage.js
#	public/chunks/settings-subscription.js
#	public/chunks/settings.js
#	public/chunks/shared-files.js
#	public/chunks/shared.js
#	public/chunks/shared/file-browser.js
#	public/chunks/stripe-credentials.js
#	public/chunks/subscription-plans.js
#	public/chunks/subscription-service.js
#	public/chunks/upgrade-billing.js
#	public/chunks/upgrade-plan.js
#	public/chunks/user-create.js
#	public/chunks/user-delete.js
#	public/chunks/user-detail.js
#	public/chunks/user-invoices.js
#	public/chunks/user-storage.js
#	public/chunks/user-subscription.js
#	public/chunks/user.js
#	public/chunks/users.js
#	public/js/main.js
#	public/mix-manifest.json
#	public/vendors~chunks/platform~chunks/shared.js
2021-04-20 08:15:34 +02:00

162 lines
4.7 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)
// Oasis redirection to setup plan process after sign in
if (response.data.data.attributes.role === 'user' && ! response.data.data.relationships.settings.data.attributes.payment_activation)
router.push({name: 'SetUpPlan'})
commit('RETRIEVE_USER', response.data)
}).catch((error) => {
reject(error)
// Redirect if unauthenticated
if ([401, 403].includes(error.response.status)) {
commit('SET_AUTHORIZED', false)
}
}
)
})
},
logOut: ({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 clipboard
if (!folder)
items = context.getters.clipboard
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 clipboard
if (!folder) {
context.commit('CLIPBOARD_CLEAR')
}
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
}