commerce-vuex
Version:
Commerce vuex module
126 lines (104 loc) • 3.67 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 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)
}
},
}
}