UNPKG

wholesale-vuex

Version:
88 lines (86 loc) 2.76 kB
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); } }, }, }