From ca4d86f238f5f960dd19c9e6a635650616ee220f Mon Sep 17 00:00:00 2001 From: alma Date: Wed, 16 Apr 2025 20:55:14 +0200 Subject: [PATCH] Neah version mail remove mail correction 7 --- app/mail/page.tsx | 52 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/app/mail/page.tsx b/app/mail/page.tsx index f09ca36..c67f247 100644 --- a/app/mail/page.tsx +++ b/app/mail/page.tsx @@ -1546,14 +1546,60 @@ export default function MailPage() { setPage(1); try { - const response = await fetch(`/api/mail?folder=${encodeURIComponent(newMailbox)}`); + // Optimize the request by adding a timeout + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 second timeout + + const response = await fetch(`/api/mail?folder=${encodeURIComponent(newMailbox)}&page=1&limit=${emailsPerPage}`, { + signal: controller.signal + }); + + clearTimeout(timeoutId); + if (!response.ok) { throw new Error('Failed to fetch emails'); } + const data = await response.json(); - setEmails(data.emails); + + // Process emails more efficiently + const processedEmails = data.emails.map((email: any) => ({ + id: Number(email.id), + accountId: 1, + from: email.from || '', + fromName: email.from?.split('@')[0] || '', + to: email.to || '', + subject: email.subject || '(No subject)', + body: email.body || '', + date: email.date || new Date().toISOString(), + read: email.read || false, + starred: email.starred || false, + folder: email.folder || newMailbox, + cc: email.cc, + bcc: email.bcc, + flags: email.flags || [] + })); + + setEmails(processedEmails); + setHasMore(processedEmails.length === emailsPerPage); + + // Only update unread count if we're in the Inbox folder + if (newMailbox === 'INBOX') { + const unreadInboxEmails = processedEmails.filter( + (email: Email) => !email.read && email.folder === 'INBOX' + ).length; + setUnreadCount(unreadInboxEmails); + } } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to fetch emails'); + if (err instanceof Error) { + if (err.name === 'AbortError') { + setError('Request timed out. Please try again.'); + } else { + setError(err.message); + } + } else { + setError('Failed to fetch emails'); + } } finally { setLoading(false); }