You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Global-sales/src/hooks/useEmail.js

50 lines
1.5 KiB
JavaScript

import { useState, useEffect } from 'react'
import { isEmpty } from '@/utils/commons'
8 months ago
import { getEmailDetailAction, postResendEmailAction } from '@/actions/EmailActions'
import { App, Button, Divider, Avatar } from 'antd'
/**
* @param mai_sn 邮件编号ID
* @param data 直接传递, 不重复获取
* * 在详情点击`回复`呼出编辑时
*/
export const useEmailDetail = (mai_sn, data) => {
const {notification} = App.useApp()
const [loading, setLoading] = useState(false)
const [mailData, setMailData] = useState({ loading, info: {}, content: '', attachments: [] })
8 months ago
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)
notification.error({
message: "请求失败",
description: err.message || '网络异常',
placement: "top",
duration: 3,
});
}
}
if (isEmpty(data)) getEmailDetail()
else setMailData(data)
}, [mai_sn])
8 months ago
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 { loading, mailData, postEmailResend }
}