diff --git a/src/pages/received/Components/Header.tsx b/src/pages/received/Components/Header.tsx index 9c10643..33b0804 100644 --- a/src/pages/received/Components/Header.tsx +++ b/src/pages/received/Components/Header.tsx @@ -11,6 +11,7 @@ import MessageFavorite from './MessageFavorite' import MessageTrash from './MessageTrash' import { MessageDetail } from '../types/Types' import { sanitizeEmailHTML, detectTextDirection } from '@/config/func' +import { useDownloadEmail } from '../hooks/useEmailData' const Header: FC<{ mailBoxName: MailboxEnum, @@ -20,7 +21,7 @@ const Header: FC<{ const navigate = useNavigate() const { t } = useTranslation() - + const { mutate: downloadEmail } = useDownloadEmail() const handlePrint = () => { if (!messageDetail) return @@ -92,6 +93,34 @@ const Header: FC<{ } } + const handleDownloadEmail = () => { + if (!messageDetail) return + downloadEmail({ messageId: Number(messageDetail.id), mailbox: messageDetail.mailbox }, { + onSuccess: (data) => { + try { + const url = window.URL.createObjectURL(data) + const link = document.createElement('a') + link.href = url + const fileName = (messageDetail.subject || `email-${messageDetail.id}`) + .replace(/[<>:"/\\|?*]/g, '') // حذف کاراکترهای غیرمجاز + .substring(0, 100) // محدود کردن طول نام فایل + link.download = `${fileName}.eml` + document.body.appendChild(link) + link.click() + document.body.removeChild(link) + window.URL.revokeObjectURL(url) + } catch (error) { + console.error('خطا در دانلود فایل:', error) + alert('خطا در دانلود فایل رخ داد') + } + }, + onError: (error) => { + console.error('خطا در دریافت فایل:', error) + alert('خطا در دریافت فایل از سرور رخ داد') + } + }) + } + return (
@@ -111,6 +140,7 @@ const Header: FC<{