diff --git a/src/channel/bubbleMsgUtils.js b/src/channel/bubbleMsgUtils.js index 71422e8..cc70bd9 100644 --- a/src/channel/bubbleMsgUtils.js +++ b/src/channel/bubbleMsgUtils.js @@ -658,7 +658,7 @@ export const parseRenderMessageList = (messages) => { sender: msgContent.from, senderName: msgContent?.customerProfile?.name || 'me', // msgContent.from, replyButton: ['text', 'document', 'image', 'email'].includes(msgContent.type) && (msgContent?.status || '') !== 'failed', - // 用forwarded表示Resend, 与Reply互斥 // debug: email, failed + // 用forwarded表示Resend, 与Reply互斥 forwarded: msg.msg_direction === 'outbound' && msg.msg_source === 'email' && ['email'].includes(msgContent.type) diff --git a/src/hooks/useEmail.js b/src/hooks/useEmail.js index 06d9dec..8256d1d 100644 --- a/src/hooks/useEmail.js +++ b/src/hooks/useEmail.js @@ -1,6 +1,7 @@ import { useState, useEffect } from 'react' import { isEmpty } from '@/utils/commons' -import { getEmailDetailAction } from '@/actions/EmailActions' +import { getEmailDetailAction, postResendEmailAction } from '@/actions/EmailActions' +import { App, Button, Divider, Avatar } from 'antd' /** * @param mai_sn 邮件编号ID @@ -10,6 +11,7 @@ import { getEmailDetailAction } from '@/actions/EmailActions' export const useEmailDetail = (mai_sn, data) => { const [loading, setLoading] = useState(false) const [mailData, setMailData] = useState({ loading, info: {}, content: '', attachments: [] }) + useEffect(() => { const getEmailDetail = async () => { if (isEmpty(mai_sn)) { @@ -28,5 +30,13 @@ export const useEmailDetail = (mai_sn, data) => { if (isEmpty(data)) getEmailDetail() else setMailData(data) }, [mai_sn]) - return mailData + + const postEmailResend = async ({ mai_sn, conversationid: externalid, actionId: actionid, ...body }) => { + if (isEmpty(mai_sn)) { + return false + } + await postResendEmailAction({ mai_sn, externalid, actionid, token: 0 }) + } + + return { mailData, postEmailResend } } diff --git a/src/views/Conversations/Online/Components/BubbleEmail.jsx b/src/views/Conversations/Online/Components/BubbleEmail.jsx index fe29b6a..5f419a4 100644 --- a/src/views/Conversations/Online/Components/BubbleEmail.jsx +++ b/src/views/Conversations/Online/Components/BubbleEmail.jsx @@ -1,11 +1,12 @@ -import { createContext, useEffect, useState, memo } from 'react'; -import { Button } from 'antd'; -import { MailFilled, MailOutlined, WhatsAppOutlined } from '@ant-design/icons'; +import { memo } from 'react'; +import { App } from 'antd'; +import { MailOutlined } from '@ant-design/icons'; import { MessageBox } from 'react-chat-elements'; -import { groupBy, isEmpty, } from '@/utils/commons'; -// import { } from '@/actions/EmailActions'; +import { isEmpty, } from '@/utils/commons'; +import { useEmailDetail, } from '@/hooks/useEmail'; const BubbleEmail = ({ onOpenEditor, onOpenEmail, ...message }) => { + const { notification } = App.useApp() const RenderText = memo(function renderText({ className, email, sender }) { return ( @@ -25,8 +26,22 @@ const BubbleEmail = ({ onOpenEditor, onOpenEmail, ...message }) => { } } + const { postEmailResend } = useEmailDetail() const handleResend = async (emailMsgContent) => { - // const result = await postResendEmail({ id: emailMsgContent.id, actionId: emailMsgContent.actionId }); + if (isEmpty((emailMsgContent.mai_sn || emailMsgContent.id))) { + return false + } + try { + // debug: mai_sn: emailMsgContent.mai_sn + await postEmailResend({ mai_sn: 5066519, conversationid: message.conversationid, actionId: emailMsgContent.actionId }) + } catch (err) { + notification.error({ + message: "请求失败", + description: err.message, + placement: "top", + duration: 3, + }); + } }; return ( { const [mobile] = useStyleStore((state) => [state.mobile]) - const mailData = useEmailDetail(mailID) + const { mailData, postEmailResend } = useEmailDetail(mailID) const handleResend = async () => { if (isEmpty(mai_sn)) { @@ -60,7 +60,7 @@ const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => { } try { // debug: mai_sn - await postResendEmailAction({ mai_sn: 5066519, externalid: conversationid, actionid: actionId, token: 0 }) + await postEmailResend({ mai_sn: 5066519, conversationid, actionId }) setOpen(false) } catch (err) { notification.error({ diff --git a/src/views/Conversations/Online/Input/EmailEditorPopup.jsx b/src/views/Conversations/Online/Input/EmailEditorPopup.jsx index e6f8333..4b09b78 100644 --- a/src/views/Conversations/Online/Input/EmailEditorPopup.jsx +++ b/src/views/Conversations/Online/Input/EmailEditorPopup.jsx @@ -67,7 +67,7 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, fromUser, conversationid, const emailListMapped = emailList?.reduce((r, v) => ({ ...r, [v.opi_sn]: v })); const mai_sn = quoteid; - const mailData = useEmailDetail(mai_sn, _mailData); + const {mailData} = useEmailDetail(mai_sn, _mailData); const emailUser = mailData.info?.MAI_OPI_SN || fromUser // quote.order_opi const emailUserMat = mailData.info?.MAI_MAT_SN || emailListMapped?.[emailUser]?.mat_sn