UNPKG

commerce-vuex

Version:
126 lines (104 loc) 3.67 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 connectionService from './connection.service' const { doPostOne, doPatchOne, doFetchOne } = connectionService 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 }, }, actions: { new({ commit }, { primaryBusinessId, primaryBusinessName, primaryBusinessProfile }) { commit('inProgress', false); commit('setOne', { primaryBusinessId: primaryBusinessId, primaryBusinessName: primaryBusinessName, primaryBusinessProfile: primaryBusinessProfile, secondaryBusinessId: null, secondaryBusinessProfile: null, description: null, status: 'inactive', secondaryBusinessName: null, }); }, fetchOne: async ({ commit }, { connectionBusinessEntityId }) => { commit('inProgress', true); //commit('setOne', null); let business = await doFetchOne({ connectionBusinessEntityId }); if (business) { commit('setOne', humps(business)); commit('inProgress', false); return humps(business); } }, save: async ({ commit, state }) => { commit('inProgress', true); try { if (undefined === state.one.id) { let business = await doPostOne(snakes(state.one)); commit('inProgress', false); return ({ new: true, business: humps(business) }); } else { let business = await doPatchOne(snakes(state.one)); commit('inProgress', false); return ({ update: true, business: humps(business) }); } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, updateConnection: async ({ commit }, { updateProperty, connectionId }) => { commit('inProgress', true); try { let business = await doPatchOne({ updateProperty, connectionId }); commit('inProgress', false); return ({ update: true, business: humps(business) }); } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, createConnection: async ({ commit },{one}) => { commit('inProgress', true); try { let connection = await doPostOne(snakes(one)); if(connection){ commit('inProgress', false); return connection } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, } }