Neah version mail remove mail correction 7
This commit is contained in:
parent
2173232f67
commit
ca4d86f238
@ -1546,14 +1546,60 @@ export default function MailPage() {
|
|||||||
setPage(1);
|
setPage(1);
|
||||||
|
|
||||||
try {
|
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) {
|
if (!response.ok) {
|
||||||
throw new Error('Failed to fetch emails');
|
throw new Error('Failed to fetch emails');
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
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) {
|
} 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 {
|
} finally {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user