Neah/lib/utils/email-content.ts

53 lines
1.8 KiB
TypeScript

import DOMPurify from 'dompurify';
export function formatEmailContent(email: any): string {
if (!email) {
console.log('formatEmailContent: No email provided');
return '';
}
try {
console.log('formatEmailContent: Raw email content:', {
content: email.content,
html: email.html,
text: email.text,
formattedContent: email.formattedContent
});
// Get the content in order of preference
let content = '';
if (email.content && typeof email.content === 'object') {
console.log('formatEmailContent: Using object content:', email.content);
content = email.content.html || email.content.text || '';
} else if (typeof email.content === 'string') {
console.log('formatEmailContent: Using direct string content');
content = email.content;
} else if (email.html) {
console.log('formatEmailContent: Using html content');
content = email.html;
} else if (email.text) {
console.log('formatEmailContent: Using text content');
content = email.text;
} else if (email.formattedContent) {
console.log('formatEmailContent: Using formattedContent');
content = email.formattedContent;
}
console.log('formatEmailContent: Content before sanitization:', content);
// Sanitize the content for display while preserving formatting
const sanitizedContent = DOMPurify.sanitize(content, {
ADD_TAGS: ['style', 'table', 'thead', 'tbody', 'tr', 'td', 'th'],
ADD_ATTR: ['class', 'style', 'dir', 'colspan', 'rowspan'],
ALLOW_DATA_ATTR: false
});
console.log('formatEmailContent: Final sanitized content:', sanitizedContent);
return sanitizedContent;
} catch (error) {
console.error('formatEmailContent: Error formatting email content:', error);
return '';
}
}