diff --git a/app/courrier/page.tsx b/app/courrier/page.tsx index dacac128..506aa88f 100644 --- a/app/courrier/page.tsx +++ b/app/courrier/page.tsx @@ -625,23 +625,112 @@ export default function CourrierPage() { // Process emails and sort by date const processedEmails = (data.emails || []) - .map((email: any) => ({ - id: email.id, - accountId: 1, - from: email.from || '', - fromName: email.fromName || email.from?.split('@')[0] || '', - to: email.to || '', - subject: email.subject || '(No subject)', - content: email.preview || '', - date: email.date || new Date().toISOString(), - read: email.read || false, - starred: email.starred || false, - folder: email.folder || currentView, - cc: email.cc, - bcc: email.bcc, - flags: email.flags || [], - hasAttachments: email.hasAttachments || false - })) + .map((email: any) => { + // Add proper handling for from field which might be an array or object + let fromText = ''; + let fromName = ''; + let toText = ''; + let ccText = ''; + let bccText = ''; + + // Handle 'from' field + if (email.from) { + if (Array.isArray(email.from)) { + if (email.from.length > 0) { + if (typeof email.from[0] === 'object') { + fromText = email.from[0].address || ''; + fromName = email.from[0].name || email.from[0].address?.split('@')[0] || ''; + } else { + fromText = email.from[0] || ''; + fromName = fromText.split('@')[0] || ''; + } + } + } + else if (typeof email.from === 'object') { + fromText = email.from.address || ''; + fromName = email.from.name || email.from.address?.split('@')[0] || ''; + } + else if (typeof email.from === 'string') { + fromText = email.from; + fromName = email.fromName || email.from.split('@')[0] || ''; + } + } + + // Handle 'to' field + if (email.to) { + if (Array.isArray(email.to)) { + if (email.to.length > 0) { + if (typeof email.to[0] === 'object') { + toText = email.to.map((t: any) => t.address || '').join(', '); + } else { + toText = email.to.join(', '); + } + } + } + else if (typeof email.to === 'object') { + toText = email.to.address || ''; + } + else if (typeof email.to === 'string') { + toText = email.to; + } + } + + // Handle 'cc' field + if (email.cc) { + if (Array.isArray(email.cc)) { + if (email.cc.length > 0) { + if (typeof email.cc[0] === 'object') { + ccText = email.cc.map((c: any) => c.address || '').join(', '); + } else { + ccText = email.cc.join(', '); + } + } + } + else if (typeof email.cc === 'object') { + ccText = email.cc.address || ''; + } + else if (typeof email.cc === 'string') { + ccText = email.cc; + } + } + + // Handle 'bcc' field + if (email.bcc) { + if (Array.isArray(email.bcc)) { + if (email.bcc.length > 0) { + if (typeof email.bcc[0] === 'object') { + bccText = email.bcc.map((b: any) => b.address || '').join(', '); + } else { + bccText = email.bcc.join(', '); + } + } + } + else if (typeof email.bcc === 'object') { + bccText = email.bcc.address || ''; + } + else if (typeof email.bcc === 'string') { + bccText = email.bcc; + } + } + + return { + id: email.id, + accountId: 1, + from: fromText, + fromName: fromName, + to: toText, + subject: email.subject || '(No subject)', + content: email.content || '', + date: email.date || new Date().toISOString(), + read: email.read || false, + starred: email.starred || false, + folder: email.folder || currentView, + cc: ccText, + bcc: bccText, + flags: email.flags || [], + hasAttachments: email.hasAttachments || false + }; + }) .sort((a: Email, b: Email) => new Date(b.date).getTime() - new Date(a.date).getTime()); // Set emails @@ -691,7 +780,7 @@ export default function CourrierPage() { return account ? account.color : 'bg-gray-500'; }; - // Update handleEmailSelect to use the full content that's already in the emails data + // Update handleEmailSelect to handle the from field correctly const handleEmailSelect = async (emailId: string) => { try { setContentLoading(true); @@ -1105,15 +1194,15 @@ export default function CourrierPage() {
- {selectedEmail.fromName} <{selectedEmail.from}> + {selectedEmail.fromName || 'Unknown'} {selectedEmail.from && <{selectedEmail.from}>}
- to {selectedEmail.to} + to {selectedEmail.to || 'No recipients'}
{selectedEmail.cc && (@@ -1143,7 +1232,7 @@ export default function CourrierPage() {