|
|
|
@ -436,119 +436,20 @@ const messageSlice = (set, get) => ({
|
|
|
|
|
targetMsgs.push(message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// const targetIndex = conversationsList.findIndex((ele) => String(ele.sn) === String(targetId));
|
|
|
|
|
// let newConversations = [];
|
|
|
|
|
// if (targetIndex !== -1) { // 'delivered'
|
|
|
|
|
// // 更新列表的时间
|
|
|
|
|
// conversationsList.splice(targetIndex, 1, {
|
|
|
|
|
// ...conversationsList[targetIndex],
|
|
|
|
|
// last_received_time: message.status === 'received' ? dayjs(message.deliverTime).add(8, 'hours').format(DATETIME_FORMAT) : conversationsList[targetIndex].last_received_time,
|
|
|
|
|
// conversation_expiretime: message?.conversation?.expireTime || conversationsList[targetIndex].conversation_expiretime || '', // 保留使用UTC时间
|
|
|
|
|
// last_message: { ...message, source: message.msg_source },
|
|
|
|
|
// })
|
|
|
|
|
// } else if (targetIndex === -1) {
|
|
|
|
|
// // 当前客户端不存在的会话
|
|
|
|
|
// // todo: 设置为当前(在WhatsApp返回号码不一致时)
|
|
|
|
|
// const newContact = message.msg_direction === 'outbound' ? message.to : message.from;
|
|
|
|
|
// newConversations = [{
|
|
|
|
|
// ...conversationRow,
|
|
|
|
|
// ...message,
|
|
|
|
|
// sn: targetId,
|
|
|
|
|
// opi_sn: currentConversation.opi_sn, // todo: coli sn
|
|
|
|
|
// last_received_time: message.date,
|
|
|
|
|
// unread_msg_count: 0,
|
|
|
|
|
// whatsapp_name: newContact, //message?.senderName || message?.sender || '',
|
|
|
|
|
// customer_name: newContact, // message?.senderName || message?.sender || '',
|
|
|
|
|
// conversation_expiretime: message?.conversation?.expireTime || '', // 保留使用UTC时间
|
|
|
|
|
// whatsapp_phone_number: message.type === 'email' ? null : newContact,
|
|
|
|
|
// show_default: message?.conversation?.name || newContact || '',
|
|
|
|
|
// session_type: message?.conversation?.type === 'group' ? 1 : 0,
|
|
|
|
|
// last_message: { ...message, source: message.msg_source },
|
|
|
|
|
// channels: {
|
|
|
|
|
// "email": message.type === 'email' ? newContact : null,
|
|
|
|
|
// "phone_number": message.type === 'email' ? null : newContact,
|
|
|
|
|
// "whatsapp_phone_number": message.type === 'email' ? null : newContact,
|
|
|
|
|
// },
|
|
|
|
|
// }];
|
|
|
|
|
// }
|
|
|
|
|
// const mergedList = [...newConversations, ...conversationsList]
|
|
|
|
|
setFilter({ loadNextPage: true });
|
|
|
|
|
// const { topList, pageList } = sortConversationList(mergedList);
|
|
|
|
|
|
|
|
|
|
return set({
|
|
|
|
|
// topList,
|
|
|
|
|
// pageList,
|
|
|
|
|
// conversationsList: mergedList,
|
|
|
|
|
activeConversations: { ...activeConversations, [String(targetId)]: targetMsgs },
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
sentOrReceivedNewMessage: (targetId, message) => {
|
|
|
|
|
// msgRender:
|
|
|
|
|
// console.log('sentOrReceivedNewMessage', targetId, message)
|
|
|
|
|
const { activeConversations, conversationsList, currentConversation, totalNotify, setFilter } = get();
|
|
|
|
|
const { activeConversations, setFilter } = get();
|
|
|
|
|
const targetMsgs = activeConversations[String(targetId)] || [];
|
|
|
|
|
// const targetIndex = conversationsList.findIndex((ele) => Number(ele.sn) === Number(targetId));
|
|
|
|
|
// const lastReceivedTime = (message.type !== 'system' && message.sender !== 'me') ? dayjs(message.date).add(8, 'hours').format(DATETIME_FORMAT) : null;
|
|
|
|
|
// const newContact = message.msg_direction === 'outbound' ? message.to : message.from;
|
|
|
|
|
// const newConversation =
|
|
|
|
|
// targetIndex !== -1
|
|
|
|
|
// ? {
|
|
|
|
|
// ...conversationsList[targetIndex],
|
|
|
|
|
// last_received_time: lastReceivedTime || conversationsList[targetIndex].last_received_time,
|
|
|
|
|
// unread_msg_count:
|
|
|
|
|
// Number(targetId) !== Number(currentConversation.sn) && message.sender !== 'me'
|
|
|
|
|
// ? conversationsList[targetIndex].unread_msg_count + 1
|
|
|
|
|
// : conversationsList[targetIndex].unread_msg_count,
|
|
|
|
|
// last_message: { ...message, source: message.msg_source },
|
|
|
|
|
// }
|
|
|
|
|
// : {
|
|
|
|
|
// ...conversationRow,
|
|
|
|
|
// ...message,
|
|
|
|
|
// sn: Number(targetId),
|
|
|
|
|
// opi_sn: message.opi_sn || currentConversation.opi_sn, // todo: coli sn
|
|
|
|
|
// last_received_time: dayjs(message.date).add(8, 'hours').format(DATETIME_FORMAT),
|
|
|
|
|
// unread_msg_count: message.sender === 'me' ? 0 : 1,
|
|
|
|
|
// whatsapp_name: message?.senderName || message?.sender || '',
|
|
|
|
|
// customer_name: message?.senderName || message?.sender || '',
|
|
|
|
|
// whatsapp_phone_number: message.type === 'email' ? null : newContact,
|
|
|
|
|
// show_default: message?.conversation?.name || message?.senderName || message?.sender || newContact || '',
|
|
|
|
|
// session_type: message?.conversation?.type === 'group' ? 1 : 0,
|
|
|
|
|
// last_message: { ...message, source: message.msg_source },
|
|
|
|
|
// channels: {
|
|
|
|
|
// "email": message.type === 'email' ? newContact : null,
|
|
|
|
|
// "phone_number": message.type === 'email' ? null : newContact,
|
|
|
|
|
// "whatsapp_phone_number": message.type === 'email' ? null : newContact,
|
|
|
|
|
// },
|
|
|
|
|
// };
|
|
|
|
|
// if (targetIndex === -1) {
|
|
|
|
|
// conversationsList.unshift(newConversation);
|
|
|
|
|
// } else {
|
|
|
|
|
// // if (String(targetId)!== '0') {
|
|
|
|
|
// conversationsList.splice(targetIndex, 1);
|
|
|
|
|
// conversationsList.unshift(newConversation);
|
|
|
|
|
// }
|
|
|
|
|
// console.log('find in list, i:', targetIndex);
|
|
|
|
|
// console.log('find in list, chat updated and Top: \n', JSON.stringify(newConversation, null, 2));
|
|
|
|
|
// console.log('list updated : \n', JSON.stringify(conversationsList, null, 2));
|
|
|
|
|
setFilter({ loadNextPage: true });
|
|
|
|
|
|
|
|
|
|
const isCurrent = Number(targetId) === Number(currentConversation.sn);
|
|
|
|
|
const updatedCurrent = isCurrent
|
|
|
|
|
? {
|
|
|
|
|
...currentConversation,
|
|
|
|
|
last_received_time: dayjs(message.date).add(8, 'hours').format(DATETIME_FORMAT),
|
|
|
|
|
conversation_expiretime: dayjs(message.date).add(24, 'hours').format(DATETIME_FORMAT),
|
|
|
|
|
last_message: { ...message, source: message.msg_source },
|
|
|
|
|
}
|
|
|
|
|
: {...currentConversation, last_message: message,};
|
|
|
|
|
|
|
|
|
|
// const { topList, pageList } = sortConversationList(conversationsList);
|
|
|
|
|
return set({
|
|
|
|
|
// currentConversation: updatedCurrent,
|
|
|
|
|
// topList,
|
|
|
|
|
// pageList,
|
|
|
|
|
// conversationsList: [...conversationsList],
|
|
|
|
|
// totalNotify: totalNotify + (message.sender === 'me' ? 0 : 1),
|
|
|
|
|
activeConversations: { ...activeConversations, [String(targetId)]: [...targetMsgs, message] },
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|