Shivam Mishra
2024-10-02 13:06:30 +05:30
committed by GitHub
parent e0bf2bd9d4
commit 42f6621afb
661 changed files with 15939 additions and 31194 deletions

View File

@@ -43,7 +43,8 @@ export const actions = {
try {
const { data } = await sendMessageAPI(content, replyTo);
commit('deleteMessage', message.id);
// [VITE] Don't delete this manually, since `pushMessageToConversation` does the replacement for us anyway
// commit('deleteMessage', message.id);
commit('pushMessageToConversation', { ...data, status: 'sent' });
} catch (error) {
commit('pushMessageToConversation', { ...message, status: 'failed' });

View File

@@ -1,10 +1,9 @@
import Vue from 'vue';
import { MESSAGE_TYPE } from 'widget/helpers/constants';
import { findUndeliveredMessage } from './helpers';
export const mutations = {
clearConversations($state) {
Vue.set($state, 'conversations', {});
$state.conversations = {};
},
pushMessageToConversation($state, message) {
const { id, status, message_type: type } = message;
@@ -14,7 +13,7 @@ export const mutations = {
const isTemporaryMessage = status === 'in_progress';
if (!isMessageIncoming || isTemporaryMessage) {
Vue.set(messagesInbox, id, message);
messagesInbox[id] = message;
return;
}
@@ -23,10 +22,13 @@ export const mutations = {
message
);
if (!messageInConversation) {
Vue.set(messagesInbox, id, message);
messagesInbox[id] = message;
} else {
Vue.delete(messagesInbox, messageInConversation.id);
Vue.set(messagesInbox, id, message);
// [VITE] instead of leaving undefined behind, we remove it completely
// remove the temporary message and replace it with the new message
// messagesInbox[messageInConversation.id] = undefined;
delete messagesInbox[messageInConversation.id];
messagesInbox[id] = message;
}
},
@@ -37,8 +39,11 @@ export const mutations = {
const messageInConversation = messagesInbox[tempId];
if (messageInConversation) {
Vue.delete(messagesInbox, tempId);
Vue.set(messagesInbox, id, { ...message });
// [VITE] instead of leaving undefined behind, we remove it completely
// remove the temporary message and replace it with the new message
// messagesInbox[tempId] = undefined;
delete messagesInbox[tempId];
messagesInbox[id] = { ...message };
}
},
@@ -59,11 +64,13 @@ export const mutations = {
return;
}
payload.map(message => Vue.set($state.conversations, message.id, message));
payload.forEach(message => {
$state.conversations[message.id] = message;
});
},
setMissingMessagesInConversation($state, payload) {
Vue.set($state, 'conversation', payload);
$state.conversation = payload;
},
updateMessage($state, { id, content_attributes }) {
@@ -81,14 +88,14 @@ export const mutations = {
if (!message) return;
const newMeta = message.meta ? { ...message.meta, ...meta } : { ...meta };
Vue.set(message, 'meta', {
...newMeta,
});
message.meta = { ...newMeta };
},
deleteMessage($state, id) {
const messagesInbox = $state.conversations;
Vue.delete(messagesInbox, id);
delete $state.conversations[id];
// [VITE] In Vue 3 proxy objects, we can't delete properties by setting them to undefined
// Instead, we have to use the delete operator
// $state.conversations[id] = undefined;
},
toggleAgentTypingStatus($state, { status }) {