mirror of
https://github.com/YunoHost/yunohost-admin.git
synced 2024-09-03 20:06:15 +02:00
add cache functionnality to mutation FETCH_ALL and add state for permissions and groups
This commit is contained in:
parent
d4aa49fd34
commit
3955344fa6
1 changed files with 25 additions and 11 deletions
|
@ -5,7 +5,9 @@ export default {
|
|||
state: () => ({
|
||||
domains: undefined, // Array
|
||||
users: undefined, // basic user data: Object {username: {data}}
|
||||
users_details: {} // precise user data: Object {username: {data}}
|
||||
users_details: {}, // precise user data: Object {username: {data}}
|
||||
groups: undefined,
|
||||
permissions: undefined
|
||||
}),
|
||||
|
||||
mutations: {
|
||||
|
@ -39,6 +41,14 @@ export default {
|
|||
if (state.users) {
|
||||
Vue.delete(state.users, username)
|
||||
}
|
||||
},
|
||||
|
||||
'SET_GROUPS' (state, groups) {
|
||||
state.groups = groups
|
||||
},
|
||||
|
||||
'SET_PERMISSIONS' (state, permissions) {
|
||||
state.permissions = permissions
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -51,31 +61,35 @@ export default {
|
|||
return api.get(param ? `${uri}/${param}` : uri).then(responseData => {
|
||||
const data = responseData[storeKey] ? responseData[storeKey] : responseData
|
||||
commit('SET_' + storeKey.toUpperCase(), param ? [param, data] : data)
|
||||
return data
|
||||
return param ? state[storeKey][param] : state[storeKey]
|
||||
})
|
||||
},
|
||||
|
||||
'FETCH_ALL' ({ state, commit }, queries) {
|
||||
// TODO do not get if data is already present
|
||||
return Promise.all(queries.map(({ uri, param, storeKey = uri, force = false }) => {
|
||||
return api.get(param ? `${uri}/${param}` : uri)
|
||||
const currentState = param ? state[storeKey][param] : state[storeKey]
|
||||
// if data has already been queried, simply return
|
||||
if (currentState !== undefined && !force) {
|
||||
return { cached: true, responseData: currentState }
|
||||
}
|
||||
return api.get(param ? `${uri}/${param}` : uri).then(responseData => {
|
||||
return { storeKey, param, responseData }
|
||||
})
|
||||
})).then(responsesData => {
|
||||
return responsesData.map((responseData, i) => {
|
||||
const storeKey = queries[i].storeKey || queries[i].uri
|
||||
const param = queries[i].param
|
||||
return responsesData.map(({ storeKey, param, responseData, cached = false }) => {
|
||||
if (cached) return responseData
|
||||
const data = responseData[storeKey] ? responseData[storeKey] : responseData
|
||||
commit('SET_' + storeKey.toUpperCase(), param ? [param, data] : data)
|
||||
return data
|
||||
return param ? state[storeKey][param] : state[storeKey]
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
'POST' ({ state, commit }, { uri, data, storeKey = uri }) {
|
||||
return api.post(uri, data).then(responseData => {
|
||||
console.log(responseData)
|
||||
const data = responseData[storeKey] ? responseData[storeKey] : responseData
|
||||
commit('ADD_' + storeKey.toUpperCase(), data)
|
||||
return data
|
||||
return state[storeKey]
|
||||
})
|
||||
},
|
||||
|
||||
|
@ -83,7 +97,7 @@ export default {
|
|||
return api.put(param ? `${uri}/${param}` : uri, data).then(responseData => {
|
||||
const data = responseData[storeKey] ? responseData[storeKey] : responseData
|
||||
commit('SET_' + storeKey.toUpperCase(), param ? [param, data] : data)
|
||||
return data
|
||||
return param ? state[storeKey][param] : state[storeKey]
|
||||
})
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in a new issue