commerce-vuex
Version:
Commerce vuex module
187 lines (174 loc) • 6.26 kB
JavaScript
import { snakeCase } from 'lodash'
import humps from 'lodash-humps'
import createHumps from 'lodash-humps/lib/createHumps'
import { getField, updateField } from 'vuex-map-fields'
import brandService from './brand.service'
const { doPostOne, doPatchOne, doFetchOne ,doCreateNewBrandAndNewOwner, doPostBoardNewBrand,doDeleteSelected,doPostCreateNewBrandServiceOwner,doPostMergeAllRpc} = brandService
const snakes = createHumps(snakeCase)
export default {
namespaced: true,
state: {
one: null,
inProgress: true,
OrgList: [],
},
getters: {
getField,
},
mutations: {
updateField,
setOne(state, one) {
state.one = one;
},
inProgress(state, yesOrNo) {
state.inProgress = yesOrNo
},
setList(state, list) {
state.OrgList = list;
},
},
actions: {
new({ commit }) {
commit('inProgress', false);
commit('setOne', {
"name": "",
"logoUrl": "",
"ownerId": "",
"splashImageUrl":"",
"description":""
});
},
fetchOne: async ({ commit, dispatch, rootState }, { brandId, appId, recursive }) => {
commit('inProgress', true);
try {
const brand = await doFetchOne(brandId);
if (brand) {
commit('setOne', humps(brand));
return humps(brand);
}
if (recursive && appId != rootState.appOne.one.id) {
dispatch('appOne/fetchOne', appId, { root: true });
}
}
// eslint-disable-next-line no-useless-catch
catch (err) {
console.log(err)
// throw err
}
finally {
commit('inProgress', false)
}
},
save: async ({ commit, state }, { appId, newBrandId }) => {
commit('inProgress', true);
try {
if (undefined === state.one.id) {
let newBrand = newBrandId ? snakes(Object.assign({}, state.one, {id : newBrandId,appId: appId})) : snakes(Object.assign({}, state.one, { appId: appId }))
let brand = await doPostOne({newBrand});
commit('setOne', humps(brand));
commit('inProgress', false);
return ({ new: true, brand: humps(brand) });
} else {
let brand = await doPatchOne(snakes(state.one));
commit('inProgress', false);
commit('setOne', humps(brand));
return ({ update: true, brand: humps(brand) });
}
}
// eslint-disable-next-line no-useless-catch
catch (err) {
throw err
}
finally {
commit('inProgress', false)
}
},
cloneNewBrandOne: async ({ commit, state }, { newBrand }) => {
commit('inProgress', true);
try {
let brand = await doPostOne({newBrand});
commit('inProgress', false);
return ({ new: true, brand: humps(brand) });
}
// eslint-disable-next-line no-useless-catch
catch (err) {
throw err
}
finally {
commit('inProgress', false)
}
},
createNewBrand: async ({ commit, state }, { appId,name,activeProfiles,businessEntityId}) => {
commit('inProgress', true);
try {
let brand = await doCreateNewBrandAndNewOwner({appId,name ,activeProfiles,businessEntityId});
commit('inProgress', false);
return (brand);
}
// eslint-disable-next-line no-useless-catch
catch (err) {
throw err
}
finally {
commit('inProgress', false)
}
},
createNewBrandServiceOwner: async ({ commit }, {brandDetails,ownerDetails,ownerServices}) => {
commit('inProgress', true);
try {
let brand = await doPostCreateNewBrandServiceOwner({brandDetails,ownerDetails,ownerServices});
commit('inProgress', false);
return (brand);
}
// eslint-disable-next-line no-useless-catch
catch (err) {
throw err
}
finally {
commit('inProgress', false)
}
},
cloneBoardNewBrand: async ({ commit }, {brandDetails,ownerDetails,ownerServices}) => {
commit('inProgress', true);
try {
let brand = await doPostBoardNewBrand({brandDetails,ownerDetails,ownerServices});
commit('inProgress', false);
return (brand);
}
// eslint-disable-next-line no-useless-catch
catch (err) {
throw err
}
finally {
commit('inProgress', false)
}
},
deleteSelected: async ({ commit }, { brandId }) => {
commit('inProgress', true);
try {
await doDeleteSelected({ brandId });
return ({ deleteSelected: true })
} catch (err) {
return ({ deleteSelected: false })
}
finally {
commit('inProgress', false);
}
},
mergeAllBrands: async ({ commit }, {appId,specs}) => {
commit('inProgress', true);
try {
let brand = await doPostMergeAllRpc({appId,specs});
commit('inProgress', false);
return (brand);
}
// eslint-disable-next-line no-useless-catch
catch (err) {
throw err
}
finally {
commit('inProgress', false)
}
},
},
}