From 7a4a8df4a04cb5c143d20147c301f20216668367 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Mon, 28 Oct 2024 17:07:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=A3=E6=9E=90Email=E6=B0=94?= =?UTF-8?q?=E6=B3=A1;=20=E8=8E=B7=E5=8F=96=E8=AF=A6=E6=83=85;=20=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/channel/bubbleMsgUtils.js | 41 ++++++++------ .../Conversations/History/MessagesList.jsx | 2 +- .../Online/Components/BubbleEmail.jsx | 17 +++--- .../Online/Components/EmailDetail.jsx | 16 +++--- .../Online/Components/MessageListFilter.jsx | 14 ++--- .../Online/Input/EmailEditorPopup.jsx | 55 +++---------------- .../Conversations/Online/MessagesWrapper.jsx | 16 +++--- 7 files changed, 64 insertions(+), 97 deletions(-) diff --git a/src/channel/bubbleMsgUtils.js b/src/channel/bubbleMsgUtils.js index 8bea4ee..6b524cd 100644 --- a/src/channel/bubbleMsgUtils.js +++ b/src/channel/bubbleMsgUtils.js @@ -512,6 +512,9 @@ export const whatsappMsgTypeMapped = { return { id: msg.wamid, message: templateDataMapped?.body?.text || templateDataMapped?.body?.parameters?.[0]?.text || '', title: `${msg.template.name}` }; }, }, + email: { + data: (msg) => ({ id: msg.id, subject: msg.email.subject, originText: msg.text.body, title: msg?.customerProfile?.name || '' }), + }, }; /** * render received msg @@ -534,7 +537,7 @@ export const parseRenderMessageItem = (msg) => { customer_name: msg?.customerProfile?.name || '', whatsapp_name: msg?.customerProfile?.name || '', whatsapp_phone_number: isEmpty(msg?.customerProfile) ? msg.to : msg.from, - whatsapp_msg_type: msg.type, + whatsapp_msg_type: msg.msg_source==='WABA' ? msg.type : '', statusCN: msgStatusRenderMappedCN[msg?.status || 'failed'], statusTitle: msgStatusRenderMappedCN[msg?.status || 'failed'], replyButton: ['text', 'document', 'image'].includes(msg.type) && (msg?.status || '') !== 'failed', @@ -562,17 +565,19 @@ export const parseRenderMessageItem = (msg) => { export const parseRenderMessageList = (messages) => { return messages.map((msg, i) => { let msgContentString = ''; - if (typeof msg.msgtext_AsJOSN === 'string') { + const msgtext = msg?.msgtext || msg?.msgtext_AsJOSN || {}; + const messageorigin = msg?.messageorigin || msg?.messageorigin_AsJOSN || {}; + if (typeof msgtext === 'string') { // debug: json 缺少一部分 - msgContentString = msg.msgtext_AsJOSN.charAt(msg.msgtext_AsJOSN.length - 1) !== '}' ? msg.msgtext_AsJOSN + '}}' : msg.msgtext_AsJOSN; - // if (msg.msgtext_AsJOSN.charAt(msg.msgtext_AsJOSN.length - 1) === '"') { - // msgContentString = msg.msgtext_AsJOSN + '}}'; + msgContentString = msgtext.charAt(msgtext.length - 1) !== '}' ? msgtext + '}}' : msgtext; + // if (msg.msgtext.charAt(msg.msgtext.length - 1) === '"') { + // msgContentString = msg.msgtext + '}}'; // } else { - // msgContentString = msg.msgtext_AsJOSN + '"}'; + // msgContentString = msg.msgtext + '"}'; // } } - const msgContent = typeof msg.msgtext_AsJOSN === 'string' ? JSON.parse(msgContentString) : (msg.msgtext_AsJOSN || {}); - msgContent.template = msg.msgtype === 'template' ? { ...msgContent.template, ...msg.template_AsJOSN } : {}; + const msgContent = typeof msgtext === 'string' ? JSON.parse(msgContentString) : (msgtext || {}); + msgContent.template = msg.msgtype === 'template' ? { ...msgContent.template, ...msg.template } : {}; const msgType = Object.keys(whatsappMsgTypeMapped).includes(msgContent.type) ? msgContent.type : 'unsupported'; // const parseMethod = msgContent.bizType === 'whatsapp' ? cloneDeep(whatsappMsgTypeMapped) : {}; let waCode, waError = ''; @@ -610,26 +615,26 @@ export const parseRenderMessageList = (messages) => { statusTitle: msgStatusRenderMappedCN[msgContent?.status || 'failed'], } : {}), - ...((isEmpty(msg.messageorigin_AsJOSN) && (isEmpty(msgContent.context) || msgContent.context?.forwarded === true)) - // ...((isEmpty(msg.context) && isEmpty(msg.reaction)) || msg.context?.forwarded === true || isEmpty(msg.messageorigin) - // ...((isEmpty(msg.messageorigin_AsJOSN) || isEmpty(msgContent.context)) + ...((isEmpty(messageorigin) && (isEmpty(msgContent.context) || msgContent.context?.forwarded === true)) + // ...((isEmpty(msg.context) && isEmpty(msg.reaction)) || msg.context?.forwarded === true || isEmpty(messageorigin) + // ...((isEmpty(messageorigin) || isEmpty(msgContent.context)) ? {} : { reply: { - message: msg.messageorigin_AsJOSN?.text?.body || msg.messageorigin_AsJOSN?.text, - title: msg.messageorigin_AsJOSN?.customerProfile?.name || msg.messageorigin_AsJOSN?.senderName || 'me', - ...(typeof whatsappMsgTypeMapped[(msg.messageorigin_AsJOSN?.type || 'unsupported')]?.renderForReply === 'function' - ? whatsappMsgTypeMapped[(msg.messageorigin_AsJOSN?.type || 'unsupported')].renderForReply(msg.messageorigin_AsJOSN) + message: messageorigin?.text?.body || messageorigin?.text, + title: messageorigin?.customerProfile?.name || messageorigin?.senderName || 'me', + ...(typeof whatsappMsgTypeMapped[(messageorigin?.type || 'unsupported')]?.renderForReply === 'function' + ? whatsappMsgTypeMapped[(messageorigin?.type || 'unsupported')].renderForReply(messageorigin) : {}), - titleColor: msg.messageorigin_AsJOSN?.customerProfile?.name ? '#a791ff' : "#128c7e", + titleColor: messageorigin?.customerProfile?.name ? '#a791ff' : "#128c7e", // titleColor: msg.messageorigin_direction === 'inbound' ? '#a791ff' : "#128c7e", id: msgContent.context?.id || msgContent.context?.message_id || msgContent.reaction?.message_id, }, - origin: msg.messageorigin_AsJOSN, + origin: messageorigin, }), // conversationid: conversationid, // title: msg.customerProfile.name, - whatsapp_msg_type: msgContent.type, + whatsapp_msg_type: msg.msg_source==='WABA' ? msgContent.type : '', }; }); }; diff --git a/src/views/Conversations/History/MessagesList.jsx b/src/views/Conversations/History/MessagesList.jsx index 202502c..50bbb1b 100644 --- a/src/views/Conversations/History/MessagesList.jsx +++ b/src/views/Conversations/History/MessagesList.jsx @@ -250,7 +250,7 @@ const MessagesList = ({ ...props }) => { onTitleClick={() => handlePreview(message)} notch={false} title={message.whatsapp_msg_type === 'text' ? '' : message.title} - text={} + text={} copiableDate={true} dateString={message.dateString || message.localDate} className={[ diff --git a/src/views/Conversations/Online/Components/BubbleEmail.jsx b/src/views/Conversations/Online/Components/BubbleEmail.jsx index 2651cc8..3503c3c 100644 --- a/src/views/Conversations/Online/Components/BubbleEmail.jsx +++ b/src/views/Conversations/Online/Components/BubbleEmail.jsx @@ -9,11 +9,11 @@ const ChatboxEmail = ({ onOpenEditor, onOpenEmail, ...message }) => { const RenderText = memo(function renderText({ className, email, sender }) { return (
handlePreview(message)} className={`text-sm leading-5 emoji-text whitespace-pre-wrap cursor-pointer ${className}`} key={'msg-text'}> - {sender === 'me' &&
From: {email.fromName} <{email.fromEmail}>
} -
To: {email.toName} <{email.toEmail}>
-
Subject: {email.subject}
+ {sender === 'me' &&
From: {email.from}
} +
To: {email.to}
+
Subject: {email.email.subject}

-
{email.abstract}
+
{email.email.abstract}
); }); @@ -26,7 +26,7 @@ const ChatboxEmail = ({ onOpenEditor, onOpenEmail, ...message }) => { return ( @@ -34,7 +34,8 @@ const ChatboxEmail = ({ onOpenEditor, onOpenEmail, ...message }) => { From: - {message?.emailOrigin?.fromName} <{message?.emailOrigin.fromEmail}> + {/* {message?.emailOrigin?.fromName} <{message?.emailOrigin.fromEmail}> */} + {message.msgtext?.from} @@ -42,11 +43,11 @@ const ChatboxEmail = ({ onOpenEditor, onOpenEmail, ...message }) => { // titleColor={message.sender !== 'me' ? '#4f46e5' : ''} // 600 notch={false} position={message.sender === 'me' ? 'right' : 'left'} - onReplyClick={() => onOpenEditor(message.emailOrigin)} + onReplyClick={() => onOpenEditor(message.msgtext)} // onReplyMessageClick={() => scrollToMessage(message.reply.id)} onOpen={() => handlePreview(message)} onTitleClick={() => handlePreview(message)} - text={} + text={} // forwarded={true} // replyButton={message.sender !== 'me'} // replyButton={['text', 'document', 'image'].includes(message.whatsapp_msg_type)} diff --git a/src/views/Conversations/Online/Components/EmailDetail.jsx b/src/views/Conversations/Online/Components/EmailDetail.jsx index 7084b67..e46be31 100644 --- a/src/views/Conversations/Online/Components/EmailDetail.jsx +++ b/src/views/Conversations/Online/Components/EmailDetail.jsx @@ -38,11 +38,11 @@ const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => { const [openEmailEditor, setOpenEmailEditor] = useState(false) const [fromEmail, setFromEmail] = useState('') const [ReferEmailMsg, setReferEmailMsg] = useState('') - const onOpenEditor = (emailOrigin, action) => { - const { replyToEmail: email_addr, content } = emailOrigin + const onOpenEditor = (magtext, action) => { + const { from } = magtext setOpenEmailEditor(true) - setFromEmail(email_addr) - setReferEmailMsg(emailOrigin) + setFromEmail(from) + setReferEmailMsg(magtext) setAction(action) setOpen(false) } @@ -66,14 +66,14 @@ const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => { const ActionBtns = (props) => (
)} - {/* */} {/* { // test: data.push(emailItem); - data.push(emailReItem); + // data.push(emailReItem); setMsgLoading(false); receivedMessageList(item.sn, data); @@ -140,18 +140,20 @@ const MessagesWrapper = ({ updateRead = true, forceGetMessages }) => { const [openEmailEditor, setOpenEmailEditor] = useState(false); const [fromEmail, setFromEmail] = useState(''); const [ReferEmailMsg, setReferEmailMsg] = useState(''); - const onOpenEditor = (emailOrigin) => { - const { replyToEmail: email_addr, content } = emailOrigin; + const onOpenEditor = (emailMsgContent) => { + const { from } = emailMsgContent; // msgtext + console.log('emailMsgContent', emailMsgContent); + setOpenEmailEditor(true); - setFromEmail(email_addr); - setReferEmailMsg(emailOrigin); + setFromEmail(from); + setReferEmailMsg(emailMsgContent); }; const [openEmailDetail, setOpenEmailDetail] = useState(false); const [emailDetail, setEmailDetail] = useState({}); - const onOpenEmail = (email_detail) => { + const onOpenEmail = (emailMsg) => { setOpenEmailDetail(true); - setEmailDetail(email_detail); + setEmailDetail(emailMsg); } return (