panel 2 courier api restore
This commit is contained in:
parent
dab82e212b
commit
42615957ec
@ -6,6 +6,7 @@ import { X, Paperclip, ChevronDown, ChevronUp, SendHorizontal, Loader2 } from 'l
|
|||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { Input } from '@/components/ui/input';
|
import { Input } from '@/components/ui/input';
|
||||||
import { Card, CardContent, CardHeader, CardTitle, CardFooter } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle, CardFooter } from '@/components/ui/card';
|
||||||
|
import DOMPurify from 'isomorphic-dompurify';
|
||||||
|
|
||||||
interface ComposeEmailProps {
|
interface ComposeEmailProps {
|
||||||
initialEmail?: EmailMessage | null;
|
initialEmail?: EmailMessage | null;
|
||||||
@ -126,7 +127,7 @@ export default function ComposeEmail({
|
|||||||
).join(', ');
|
).join(', ');
|
||||||
};
|
};
|
||||||
|
|
||||||
// Initialize forwarded email
|
// Initialize forwarded email with improved style handling
|
||||||
const initializeForwardedEmail = async () => {
|
const initializeForwardedEmail = async () => {
|
||||||
if (!initialEmail) {
|
if (!initialEmail) {
|
||||||
console.error('No email available for forwarding');
|
console.error('No email available for forwarding');
|
||||||
@ -145,14 +146,14 @@ export default function ComposeEmail({
|
|||||||
|
|
||||||
setSubject(formattedSubject);
|
setSubject(formattedSubject);
|
||||||
|
|
||||||
// Process the email content using the API
|
// Process the email content
|
||||||
const emailContent = initialEmail.content || '';
|
const emailContent = initialEmail.content || '';
|
||||||
let processedContent = '';
|
let processedContent = '';
|
||||||
|
|
||||||
// Only attempt to parse if we have content
|
// Only attempt to parse if we have content
|
||||||
if (emailContent.trim()) {
|
if (emailContent.trim()) {
|
||||||
try {
|
try {
|
||||||
// Send to server API for parsing
|
// Parse email on the server
|
||||||
const response = await fetch('/api/parse-email', {
|
const response = await fetch('/api/parse-email', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
@ -166,7 +167,17 @@ export default function ComposeEmail({
|
|||||||
throw new Error(data.error || 'Failed to parse email');
|
throw new Error(data.error || 'Failed to parse email');
|
||||||
}
|
}
|
||||||
|
|
||||||
processedContent = data.html || data.text || '';
|
// Use DOMPurify to sanitize the HTML but preserve style tags
|
||||||
|
const htmlContent = data.html || data.text || '';
|
||||||
|
|
||||||
|
// Configure DOMPurify to keep certain tags including style
|
||||||
|
const sanitizedContent = DOMPurify.sanitize(htmlContent, {
|
||||||
|
ADD_TAGS: ['style', 'meta', 'link'],
|
||||||
|
ADD_ATTR: ['id', 'class', 'style'],
|
||||||
|
WHOLE_DOCUMENT: false
|
||||||
|
});
|
||||||
|
|
||||||
|
processedContent = sanitizedContent;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error parsing email content:', error);
|
console.error('Error parsing email content:', error);
|
||||||
processedContent = '<div style="color: #666; font-style: italic;">Error processing original content</div>';
|
processedContent = '<div style="color: #666; font-style: italic;">Error processing original content</div>';
|
||||||
@ -175,7 +186,7 @@ export default function ComposeEmail({
|
|||||||
processedContent = '<div style="color: #666; font-style: italic;">No content available</div>';
|
processedContent = '<div style="color: #666; font-style: italic;">No content available</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a clean, well-formatted forwarded message
|
// Create a clean, well-formatted forwarded message with the original styles preserved
|
||||||
const forwardedContent = `
|
const forwardedContent = `
|
||||||
<div style="border-top: 1px solid #e5e7eb; padding-top: 20px; margin-top: 20px; color: #6b7280; font-size: 0.875rem;">
|
<div style="border-top: 1px solid #e5e7eb; padding-top: 20px; margin-top: 20px; color: #6b7280; font-size: 0.875rem;">
|
||||||
---------- Forwarded message ---------<br/>
|
---------- Forwarded message ---------<br/>
|
||||||
@ -185,7 +196,7 @@ export default function ComposeEmail({
|
|||||||
To: ${formatRecipients(initialEmail.to)}<br/>
|
To: ${formatRecipients(initialEmail.to)}<br/>
|
||||||
${initialEmail.cc && initialEmail.cc.length ? `Cc: ${formatRecipients(initialEmail.cc)}<br/>` : ''}
|
${initialEmail.cc && initialEmail.cc.length ? `Cc: ${formatRecipients(initialEmail.cc)}<br/>` : ''}
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 10px; color: #374151;">
|
<div style="margin-top: 10px;">
|
||||||
${processedContent}
|
${processedContent}
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user