import { auth } from "@/lib/auth"; import { getActiveApp } from "@/lib/active-app"; import { writeFile, mkdir } from "fs/promises"; import path from "path"; import { randomUUID } from "crypto"; const PIPELINE_ROOT = process.env.PIPELINE_ROOT || path.join(process.cwd(), "pipeline"); export async function POST(request: Request) { const session = await auth(); if (!session) return new Response("Unauthorized", { status: 401 }); const formData = await request.formData(); const files = formData.getAll("files") as File[]; if (files.length === 0) { return Response.json({ error: "No files provided" }, { status: 400 }); } // Determine upload path based on active app const activeApp = await getActiveApp(); const screenshotsDir = activeApp ? path.join(PIPELINE_ROOT, "apps", activeApp.slug, "screenshots") : path.join(PIPELINE_ROOT, "assets", "screenshots"); const relativeBase = activeApp ? `apps/${activeApp.slug}/screenshots` : "assets/screenshots"; await mkdir(screenshotsDir, { recursive: true }); const uploaded: { fileName: string; path: string }[] = []; for (const file of files) { if (!file.type.startsWith("image/")) continue; const ext = path.extname(file.name) || ".png"; const uniqueName = `${randomUUID()}${ext}`; const filePath = path.join(screenshotsDir, uniqueName); const buffer = Buffer.from(await file.arrayBuffer()); await writeFile(filePath, buffer); uploaded.push({ fileName: file.name, path: `${relativeBase}/${uniqueName}`, }); } return Response.json({ uploaded }); }