feat: 重发

2.0/email-builder
Lei OT 11 months ago
parent 24a3fd878c
commit f9364d21df

@ -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)

@ -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 }
}

@ -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 (
<MessageBox

@ -52,7 +52,7 @@ const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => {
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({

@ -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

Loading…
Cancel
Save