import { NextRequest, NextResponse } from "next/server"; import { auth } from "@/auth"; import { getMailSession } from "@/lib/mail-session"; import { listMessages, deleteMessage, moveMessage, toggleFlag } from "@/lib/imap"; // GET /api/mail/messages?folder=INBOX&page=1 export async function GET(req: NextRequest) { const session = await auth(); if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); const creds = await getMailSession(); if (!creds) return NextResponse.json({ error: "Mail oturumu yok" }, { status: 401 }); const folder = req.nextUrl.searchParams.get("folder") ?? "INBOX"; const page = parseInt(req.nextUrl.searchParams.get("page") ?? "1"); try { const result = await listMessages(creds, folder, page, 50); return NextResponse.json(result); } catch (err: any) { return NextResponse.json( { error: "Mesajlar alınamadı: " + (err?.message ?? "") }, { status: 502 } ); } } // POST /api/mail/messages — actions: delete, move, flag export async function POST(req: NextRequest) { const session = await auth(); if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); const creds = await getMailSession(); if (!creds) return NextResponse.json({ error: "Mail oturumu yok" }, { status: 401 }); const { action, folder, uid, toFolder, flag, add } = await req.json(); try { switch (action) { case "delete": await deleteMessage(creds, folder, uid); break; case "move": await moveMessage(creds, folder, uid, toFolder); break; case "flag": await toggleFlag(creds, folder, uid, flag, add); break; default: return NextResponse.json({ error: "Bilinmeyen işlem" }, { status: 400 }); } return NextResponse.json({ success: true }); } catch (err: any) { return NextResponse.json( { error: "İşlem başarısız: " + (err?.message ?? "") }, { status: 502 } ); } }