Skip to content
Snippets Groups Projects
Commit 672e2ca4 authored by Timothee P's avatar Timothee P :sunflower:
Browse files

send basemaps synchronously to keep creation order in backend

parent e2b352f6
No related branches found
No related tags found
No related merge requests found
...@@ -121,25 +121,29 @@ const map = { ...@@ -121,25 +121,29 @@ const map = {
}, },
async SAVE_BASEMAPS({ state, rootState, dispatch }, newBasemapIds) { async SAVE_BASEMAPS({ state, rootState, dispatch }, newBasemapIds) {
const DJANGO_API_BASE = this.state.configuration.VUE_APP_DJANGO_API_BASE; //* send new basemaps synchronously to create their ids in the order they were created in the form
function postOrPut(basemap) { let promisesResult = [];
basemap['project'] = rootState.projects.project.slug; function postOrPut(basemapsToSend) {
if (newBasemapIds.includes(basemap.id)) { if (basemapsToSend.length > 0) {
return axios let basemap = basemapsToSend.shift(); //* remove and return first item in array
.post(`${DJANGO_API_BASE}base-maps/`, basemap) basemap['project'] = rootState.projects.project.slug;
.then((response) => response) let url = `${rootState.configuration.VUE_APP_DJANGO_API_BASE}base-maps/`;
.catch((error) => { if (!newBasemapIds.includes(basemap.id)) url += `${basemap.id}/`;
console.error(error); promisesResult.push(
return error; axios({
}); url,
} else { method: newBasemapIds.includes(basemap.id) ? 'POST' : 'PUT',
return axios data: basemap,
.put(`${DJANGO_API_BASE}base-maps/${basemap.id}/`, basemap) })
.then((response) => response) .then((response) => {
.catch((error) => { postOrPut(basemapsToSend);
console.error(error); return response;
return error; })
}); .catch((error) => {
postOrPut(basemapsToSend);
return error;
})
);
} }
} }
...@@ -149,14 +153,11 @@ const map = { ...@@ -149,14 +153,11 @@ const map = {
.then((response) => response); .then((response) => response);
} }
const promisesResult = await Promise.all( postOrPut([...state.basemaps]);
[ //* delete basemaps
...state.basemaps.map((basemap) => postOrPut(basemap)), const deletedResult = await Promise.all(state.basemapsToDelete.map((basemapId) => deleteBMap(basemapId)));
...state.basemapsToDelete.map((basemapId) => deleteBMap(basemapId))
]
);
state.basemapsToDelete = []; state.basemapsToDelete = [];
return promisesResult; return [...promisesResult, ...deletedResult];
}, },
DELETE_BASEMAP({ commit }, basemapId) { DELETE_BASEMAP({ commit }, basemapId) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment