diff --git a/src/channel/bubbleMsgUtils.js b/src/channel/bubbleMsgUtils.js
index 26e7215..485044e 100644
--- a/src/channel/bubbleMsgUtils.js
+++ b/src/channel/bubbleMsgUtils.js
@@ -557,9 +557,10 @@ export const whatsappMsgTypeMapped = {
type: 'email',
data: (msg) => ({ id: msg.id || msg.uid, subject: msg.subject, }),
renderForReply: (msg) => {
+ const _msg = { ...msg, ...msg.email };
return {
- id: msg.id,
- message: `[邮件] ${msg.subject}`,
+ id: _msg.id,
+ message: `[邮件] ${_msg.subject}`,
};
},
},
@@ -643,7 +644,7 @@ export const parseRenderMessageList = (messages) => {
}
return {
...msg,
- msgOrigin: msgContent,
+ msgOrigin: {...msgContent, ...msgContent.email},
...(whatsappMsgTypeMapped?.[msgType]?.data(msgContent) || {}),
type: msgContent.type,
...(typeof whatsappMsgTypeMapped[msgType].type === 'function' ? whatsappMsgTypeMapped[msgType].type(msg) : { type: whatsappMsgTypeMapped[msgType].type || 'text' }),
diff --git a/src/hooks/useEmail.js b/src/hooks/useEmail.js
new file mode 100644
index 0000000..06d9dec
--- /dev/null
+++ b/src/hooks/useEmail.js
@@ -0,0 +1,32 @@
+import { useState, useEffect } from 'react'
+import { isEmpty } from '@/utils/commons'
+import { getEmailDetailAction } from '@/actions/EmailActions'
+
+/**
+ * @param mai_sn 邮件编号ID
+ * @param data 直接传递, 不重复获取
+ * * 在详情点击`回复`呼出编辑时
+ */
+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)) {
+ return false
+ }
+ try {
+ setLoading(true)
+ const data = await getEmailDetailAction({ mai_sn })
+ setMailData(data)
+ setLoading(false)
+ } catch (err) {
+ setLoading(false)
+ }
+ }
+
+ if (isEmpty(data)) getEmailDetail()
+ else setMailData(data)
+ }, [mai_sn])
+ return mailData
+}
diff --git a/src/views/Conversations/Online/Components/EmailDetail.jsx b/src/views/Conversations/Online/Components/EmailDetail.jsx
index 05b11bb..494ed0c 100644
--- a/src/views/Conversations/Online/Components/EmailDetail.jsx
+++ b/src/views/Conversations/Online/Components/EmailDetail.jsx
@@ -6,6 +6,7 @@ import EmailEditorPopup from '../Input/EmailEditorPopup'
import DnDModal from '@/components/DndModal'
import useStyleStore from '@/stores/StyleStore'
import { getEmailDetailAction } from '@/actions/EmailActions'
+import { useEmailDetail } from '@/hooks/useEmail';
const TagColorStyle = (tag) => {
const color = stringToColour(tag)
@@ -17,12 +18,10 @@ const TagColorStyle = (tag) => {
}
const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => {
- // console.log('emailMsg', emailMsg);
- let { conversationid, } = emailMsg
- // const { mai_sn } = emailMsg.msgtext?.email || {}
- const mai_sn = 5036841 // debug: 0
- // const [open, setOpen] = useState(false);
+ let { conversationid, order_opi } = emailMsg
+ const { mai_sn, id } = emailMsg.msgOrigin?.email || emailMsg.msgOrigin || {}
+ const mailID = mai_sn || id
const [initialPosition, setInitialPosition] = useState({})
const [initialSize, setInitialSize] = useState({})
function onHandleMove(e) {
@@ -40,45 +39,30 @@ const EmailDetail = ({ open, setOpen, emailMsg, ...props }) => {
const [openEmailEditor, setOpenEmailEditor] = useState(false)
const [fromEmail, setFromEmail] = useState('')
const [ReferEmailMsg, setReferEmailMsg] = useState('')
- const onOpenEditor = (magtext, action) => {
- const { from } = magtext
+ const onOpenEditor = (msgOrigin, action) => {
+ const { from } = msgOrigin
setOpenEmailEditor(true)
setFromEmail(from)
- setReferEmailMsg(magtext)
+ setReferEmailMsg(msgOrigin)
setAction(action)
setOpen(false)
}
const [mobile] = useStyleStore((state) => [state.mobile])
- const [mailData, setMailData] = useState({info: {}, content: '', attachments: []})
- const getEmailDetail = async () => {
- if (isEmpty(mai_sn)) {
- return false;
- }
- const data = await getEmailDetailAction({ mai_sn })
- console.log('data', data);
-
- setMailData(data)
- }
-
- useEffect(() => {
- getEmailDetail()
-
- return () => {}
- }, [emailMsg])
+ const mailData = useEmailDetail(mailID)
const ActionBtns = (props) => (