Files
leadchat/app/javascript/widget/store/modules/message/mutations.js

52 lines
1.3 KiB
JavaScript

import Vue from 'vue';
export const mutations = {
addMessagesEntry($state, { messages = [] }) {
messages.forEach(message => {
Vue.set($state.messages.byId, message.id, message);
});
},
addMessageIds($state, { messages }) {
const messageIds = messages.map(message => message.id);
const allIds = $state.messages.allIds;
const newIds = [allIds, messageIds];
const uniqIds = Array.from(new Set(newIds));
Vue.set($state.messages, 'allIds', uniqIds);
},
updateMessageEntry($state, message) {
const messageId = message.id;
if (!messageId) return;
const messageById = $state.messages.byId[messageId];
if (!messageById) return;
if (messageId !== message.id) return;
Vue.set($state.messages.byId, messageId, { ...message });
},
removeMessageEntry($state, messageId) {
if (!messageId) return;
Vue.delete($state.messages.byId, messageId);
},
removeMessageId($state, messageId) {
if (!messageId) return;
$state.messages.allIds = $state.messages.allIds.filter(
id => id !== messageId
);
},
setMessageUIFlag($state, { messageId, uiFlags }) {
const flags = $state.messages.uiFlags.byId[messageId];
$state.messages.uiFlags.byId[messageId] = {
...flags,
...uiFlags,
};
},
};