wholesale-vuex
Version:
Commerce vuex module
88 lines (86 loc) • 2.76 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 wholesaleOrderChangesetService from './wholesale_order_changeset.service'
const { doFetchOne, doPatchOne, doPostOne } = wholesaleOrderChangesetService
const snakes = createHumps(snakeCase)
export default {
namespaced: true,
state: {
one:null,
inProgress: true,
},
getters: {
getField,
},
mutations: {
updateField,
setOne(state, one) {
state.one = one
},
inProgress(state, yesOrNo) {
state.inProgress = yesOrNo
},
updateChangesetMetadataInStore(state, newMeta) {
if(newMeta)
state.one.metadata = newMeta
},
},
actions: {
fetchOne: async ({ commit}, { changesetId }) => {
commit('inProgress', true);
try {
let details = await doFetchOne({ changesetId });
if(details){
commit('setOne', humps(details))
commit('inProgress', false)
return ({ data: humps(details) })
}else{
commit('inProgress', false)
return ({ data: {} })
}
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
updateChangeset: async ({ commit }, { changesetId, params }) => {
commit('inProgress', true);
try {
let changedData = await doPatchOne({ changesetId, params: snakes(params) });
return (humps(changedData))
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
updateChangesetMetadataInStore: async ({ commit }, { newMetaData }) => {
commit('inProgress', true);
try {
commit('updateChangesetMetadataInStore', newMetaData);
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
createChangeset: async ({ commit }, { changesetOne }) => {
commit('inProgress', true);
try {
let changedData = await doPostOne({ one: snakes(changesetOne) });
return (humps(changedData))
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
},
}