/* 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, };