From 7d331cf87c709e8c92f2c37cd1aa7c7a6b7550a7 Mon Sep 17 00:00:00 2001 From: alma Date: Mon, 28 Apr 2025 21:12:46 +0200 Subject: [PATCH] courrier multi account restore compose --- components/email/EmailPanel.tsx | 25 +++++++++++-------------- components/email/EmailPreview.tsx | 3 ++- lib/utils/email-content.ts | 4 ++-- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/components/email/EmailPanel.tsx b/components/email/EmailPanel.tsx index 68b3a62f..49db736a 100644 --- a/components/email/EmailPanel.tsx +++ b/components/email/EmailPanel.tsx @@ -70,26 +70,23 @@ export default function EmailPanel({ const [isComposing, setIsComposing] = useState(false); const [composeType, setComposeType] = useState<'new' | 'reply' | 'reply-all' | 'forward'>('new'); - // Create a formatted version of the email content + // Format the email content const formattedEmail = useMemo(() => { if (!email) { console.log('EmailPanel: No email provided'); return null; } - try { - const content = formatEmailContent(email); - - // Return a new email object with the formatted content - return { - ...email, - content, - formattedContent: content - }; - } catch (error) { - console.error('EmailPanel: Error formatting email content:', error); - return email; - } + console.log('EmailPanel: Raw email:', email); + + // Format the email content + const formattedContent = formatEmailContent(email); + console.log('EmailPanel: Formatted content:', formattedContent); + + return { + ...email, + content: formattedContent + }; }, [email]); // Debounced email fetch diff --git a/components/email/EmailPreview.tsx b/components/email/EmailPreview.tsx index cce28678..b10d7dd2 100644 --- a/components/email/EmailPreview.tsx +++ b/components/email/EmailPreview.tsx @@ -140,7 +140,8 @@ export default function EmailPreview({ email, loading = false, onReply }: EmailP // Sanitize the content for display const sanitizedContent = DOMPurify.sanitize(content, { ADD_TAGS: ['style'], - ADD_ATTR: ['class', 'style'] + ADD_ATTR: ['class', 'style', 'dir'], + ALLOW_DATA_ATTR: false }); console.log('EmailPreview: Final sanitized content:', sanitizedContent); diff --git a/lib/utils/email-content.ts b/lib/utils/email-content.ts index 829a2515..3667bcad 100644 --- a/lib/utils/email-content.ts +++ b/lib/utils/email-content.ts @@ -38,8 +38,8 @@ export function formatEmailContent(email: any): string { // Sanitize the content for display while preserving formatting const sanitizedContent = DOMPurify.sanitize(content, { - ADD_TAGS: ['style'], - ADD_ATTR: ['class', 'style', 'dir'], + ADD_TAGS: ['style', 'table', 'thead', 'tbody', 'tr', 'td', 'th'], + ADD_ATTR: ['class', 'style', 'dir', 'colspan', 'rowspan'], ALLOW_DATA_ATTR: false });