From 6444f675554832d4d70282174625726c89cea854 Mon Sep 17 00:00:00 2001 From: alma Date: Mon, 21 Apr 2025 17:27:04 +0200 Subject: [PATCH] mail page fix --- app/api/courrier/route.ts | 48 +++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/app/api/courrier/route.ts b/app/api/courrier/route.ts index 47ae4474..d77d2185 100644 --- a/app/api/courrier/route.ts +++ b/app/api/courrier/route.ts @@ -64,28 +64,36 @@ export async function GET(request: Request) { // Open the requested mailbox const mailbox = await client.mailboxOpen(folder); - // Fetch messages from the current folder - const messages = await client.fetch(`${start}:${end}`, { - envelope: true, - flags: true, - bodyStructure: true - }); - const result = []; - for await (const message of messages) { - result.push({ - id: message.uid, - from: message.envelope.from?.[0]?.address || '', - fromName: message.envelope.from?.[0]?.name || message.envelope.from?.[0]?.address?.split('@')[0] || '', - to: message.envelope.to?.map(addr => addr.address).join(', ') || '', - subject: message.envelope.subject || '(No subject)', - date: message.envelope.date?.toISOString() || new Date().toISOString(), - read: message.flags.has('\\Seen'), - starred: message.flags.has('\\Flagged'), - folder: mailbox.path, - hasAttachments: message.bodyStructure?.type === 'multipart', - flags: Array.from(message.flags) + + // Only try to fetch if the mailbox has messages + if (mailbox.exists > 0) { + // Adjust start and end to be within bounds + const adjustedStart = Math.min(start, mailbox.exists); + const adjustedEnd = Math.min(end, mailbox.exists); + + // Fetch messages from the current folder + const messages = await client.fetch(`${adjustedStart}:${adjustedEnd}`, { + envelope: true, + flags: true, + bodyStructure: true }); + + for await (const message of messages) { + result.push({ + id: message.uid, + from: message.envelope.from?.[0]?.address || '', + fromName: message.envelope.from?.[0]?.name || message.envelope.from?.[0]?.address?.split('@')[0] || '', + to: message.envelope.to?.map(addr => addr.address).join(', ') || '', + subject: message.envelope.subject || '(No subject)', + date: message.envelope.date?.toISOString() || new Date().toISOString(), + read: message.flags.has('\\Seen'), + starred: message.flags.has('\\Flagged'), + folder: mailbox.path, + hasAttachments: message.bodyStructure?.type === 'multipart', + flags: Array.from(message.flags) + }); + } } return NextResponse.json({