[Feature] Website live chat (#187)

Co-authored-by: Nithin David Thomas <webofnithin@gmail.com>
Co-authored-by: Sojan Jose <sojan@pepalo.com>
This commit is contained in:
Pranav Raj S
2019-10-29 12:50:54 +05:30
committed by GitHub
parent a4114288f3
commit 16fe912fbd
80 changed files with 2040 additions and 106 deletions

View File

@@ -0,0 +1,60 @@
/* eslint-disable no-param-reassign */
import Vue from 'vue';
import { sendMessageAPI, getConversationAPI } from 'widget/api/conversation';
export const DEFAULT_CONVERSATION = 'default';
const state = {
conversations: {},
};
const getters = {
getConversation: _state => _state.conversations,
};
const actions = {
sendMessage: async (_, params) => {
const { content } = params;
await sendMessageAPI(content);
},
fetchOldConversations: async ({ commit }) => {
try {
const { data } = await getConversationAPI();
commit('initMessagesInConversation', data);
} catch (error) {
// Handle error
}
},
addMessage({ commit }, data) {
commit('pushMessageToConversations', data);
},
};
const mutations = {
initInboxInConversations($state, lastConversation) {
Vue.set($state.conversations, lastConversation, {});
},
pushMessageToConversations($state, message) {
const { id } = message;
const messagesInbox = $state.conversations;
Vue.set(messagesInbox, id, message);
},
initMessagesInConversation(_state, payload) {
if (!payload.length) {
return;
}
payload.map(message => Vue.set(_state.conversations, message.id, message));
},
};
export default {
namespaced: true,
state,
getters,
actions,
mutations,
};