File: //home/arjun/projects/buyercall/buyercall/assets/vue/widgets/CommWidget/store/root/actions.js
import {
ROOT_ACTION_SET_WIDGET_VISIBILITY,
ROOT_MUTATION_SET_WIDGET_VISIBILITY,
ROOT_ACTION_GET_WIDGET_CONFIGURATIONS,
ROOT_MUTATION_SET_WIDGET_CONFIGURATION_LOADING,
ROOT_MUTATION_SET_ERROR,
CALL_MUTATION_SET_CONFIG,
CALL_SELECT,
ROOT_ACTION_SET_SCREEN_INFO,
ROOT_MUTATION_SET_SCREEN_INFO,
ROOT_ACTION_RESET_STATE,
CALL_MUTATION_RESET,
SCREEN_WELCOME,
MESSAGE_SELECT,
MESSAGE_MUTATION_SET_CONFIG,
MESSAGE_MUTATION_RESET,
EMAIL_MUTATION_SET_CONFIG,
EMAIL_SELECT,
CHAT_MUTATION_SET_CONFIG,
CHAT_SELECT,
EMAIL_MUTATION_RESET,
CHAT_MUTATION_RESET,
ROOT_MUTATION_SET_CONFIG,
ROOT_MUTATION_SET_WIDGET_ID,
ROOT_ACTION_SET_WIDGET_ID,
ROOT_MUTATION_SET_WINDOW_WIDTH,
ROOT_ACTION_SET_WINDOW_WIDTH,
ROOT_MUTATION_SELECT_BOTTOM_TAB,
ROOT_ACTION_SELECT_BOTTOM_TAB,
ROOT_ACTION_GET_AGENTS,
ROOT_MUTATION_SET_AGENTS,
ROOT_MUTATION_SET_RASA_INITIAL_MESSAGES,
ROOT_ACTION_GET_RASA_INITIAL_MESSAGES,
} from '../../constants';
import ExternalWidgetService from '../../../../service/externalWidgetService';
import OmniWidgetService from '../../../../service/omniChannelService';
import SourceService from '../../../../service/source';
import RasaService from '../../../../service/rasaService';
import _ from 'lodash';
export default {
async [ROOT_ACTION_GET_RASA_INITIAL_MESSAGES]({ commit }, payload) {
const { data } = await RasaService.getRasaResponse(payload);
commit(ROOT_MUTATION_SET_RASA_INITIAL_MESSAGES, data);
},
async [ROOT_ACTION_GET_AGENTS]({ commit }) {
const {
data: { data, message, success },
} = await SourceService.getAgents();
if (success) {
commit(ROOT_MUTATION_SET_AGENTS, data);
}
},
[ROOT_ACTION_SELECT_BOTTOM_TAB]({ commit }, payload) {
commit(ROOT_MUTATION_SELECT_BOTTOM_TAB, payload);
},
[ROOT_ACTION_SET_WINDOW_WIDTH]({ commit }, payload) {
commit(ROOT_MUTATION_SET_WINDOW_WIDTH, payload);
},
// Change widget visibility
[ROOT_ACTION_SET_WIDGET_VISIBILITY]({ commit }, payload) {
commit(ROOT_MUTATION_SET_WIDGET_VISIBILITY, payload);
},
[ROOT_ACTION_SET_WIDGET_ID]({ commit }, payload) {
commit(ROOT_MUTATION_SET_WIDGET_ID, payload);
},
[ROOT_ACTION_SET_SCREEN_INFO]({ commit, dispatch }, payload) {
if (payload.name === SCREEN_WELCOME) {
dispatch(ROOT_ACTION_RESET_STATE);
} else {
commit(ROOT_MUTATION_SET_SCREEN_INFO, payload);
}
},
async [ROOT_ACTION_GET_WIDGET_CONFIGURATIONS](
{ commit, rootGetters },
payload,
) {
commit(ROOT_MUTATION_SET_WIDGET_CONFIGURATION_LOADING, true);
const {
data: { data, message, success },
} = await OmniWidgetService.getOmniWidget(payload);
if (success) {
commit(ROOT_MUTATION_SET_CONFIG, { ..._.omit(data, 'options') });
_.forEach(data.channels, option => {
switch (option.type) {
case 'CALL':
commit(
`call/${CALL_MUTATION_SET_CONFIG}`,
{
...rootGetters[`call/${CALL_SELECT}`],
..._.omit(option, 'type'),
},
{
root: true,
},
);
break;
case 'TEXT_MESSAGE':
commit(
`message/${MESSAGE_MUTATION_SET_CONFIG}`,
{
...rootGetters[`message/${MESSAGE_SELECT}`],
..._.omit(option, 'type'),
},
{
root: true,
},
);
break;
case 'EMAIL':
commit(
`email/${EMAIL_MUTATION_SET_CONFIG}`,
{
...rootGetters[`email/${EMAIL_SELECT}`],
..._.omit(option, 'type'),
},
{
root: true,
},
);
break;
case 'CHAT':
commit(
`chat/${CHAT_MUTATION_SET_CONFIG}`,
{
...rootGetters[`chat/${CHAT_SELECT}`],
..._.omit(option, 'type'),
},
{
root: true,
},
);
break;
}
});
} else {
commit(ROOT_MUTATION_SET_ERROR, message);
}
},
[ROOT_ACTION_RESET_STATE]({ commit, dispatch }) {
commit(`call/${CALL_MUTATION_RESET}`, null, {
root: true,
});
commit(`message/${MESSAGE_MUTATION_RESET}`, null, {
root: true,
});
// commit(`chat/${CHAT_MUTATION_RESET}`, null, {
// root: true,
// });
commit(`email/${EMAIL_MUTATION_RESET}`, null, {
root: true,
});
commit(ROOT_MUTATION_SET_SCREEN_INFO, {
name: SCREEN_WELCOME,
prev: '',
});
},
};