From 22dc2a74d80f4438261a334fdf4e42ef6334a7ef Mon Sep 17 00:00:00 2001 From: alma Date: Tue, 15 Apr 2025 22:53:42 +0200 Subject: [PATCH] mail page imap connection mime 5 bis rest 5 --- app/mail/page.tsx | 123 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 122 insertions(+), 1 deletion(-) diff --git a/app/mail/page.tsx b/app/mail/page.tsx index 28fa8c0..e6ae50a 100644 --- a/app/mail/page.tsx +++ b/app/mail/page.tsx @@ -448,7 +448,7 @@ export default function MailPage() { console.log('Processed email data:', emailData); // Debug processed data // Ensure all dates are Date objects - const processedEmails = emailData.map(email => ({ + const processedEmails = emailData.map((email: Email) => ({ ...email, date: email.date ? new Date(email.date) : new Date(), read: email.read || false, @@ -629,6 +629,35 @@ export default function MailPage() { } }; + // Handle reply + const handleReply = async (type: 'reply' | 'replyAll' | 'forward') => { + const selectedEmailData = getSelectedEmail(); + if (!selectedEmailData) return; + + setComposeOpen(true); + const subject = `${type === 'forward' ? 'Fwd: ' : 'Re: '}${selectedEmailData.subject}`; + let to = ''; + let content = ''; + + switch (type) { + case 'reply': + to = selectedEmailData.from; + content = `\n\nOn ${new Date(selectedEmailData.date).toLocaleString()}, ${selectedEmailData.fromName} wrote:\n> ${selectedEmailData.body.split('\n').join('\n> ')}`; + break; + case 'replyAll': + to = selectedEmailData.from; // You would also need to add CC recipients here + content = `\n\nOn ${new Date(selectedEmailData.date).toLocaleString()}, ${selectedEmailData.fromName} wrote:\n> ${selectedEmailData.body.split('\n').join('\n> ')}`; + break; + case 'forward': + content = `\n\n---------- Forwarded message ----------\nFrom: ${selectedEmailData.fromName} <${selectedEmailData.from}>\nDate: ${new Date(selectedEmailData.date).toLocaleString()}\nSubject: ${selectedEmailData.subject}\n\n${selectedEmailData.body}`; + break; + } + + setComposeSubject(subject); + setComposeRecipient(to); + setComposeContent(content); + }; + if (loading) { return (
@@ -996,6 +1025,98 @@ export default function MailPage() {
+ + {/* Email preview panel */} +
+ {selectedEmail ? ( +
+
+

{selectedEmail.subject}

+
+ + + + + +
+
+ +
+ + + {selectedEmail.fromName?.charAt(0) || selectedEmail.from.charAt(0)} + + +
+

+ {selectedEmail.fromName || selectedEmail.from} +

+

+ to {selectedEmail.to} +

+
+
+ {formatDate(selectedEmail.date.toISOString())} +
+
+ +
+ {selectedEmail.body} +
+
+ ) : ( +
+ +

Select an email to view its contents

+
+ )} +
);