import { createUploadthing, type FileRouter } from "uploadthing/next-legacy"; import { UploadThingError } from "uploadthing/server"; import { getServerAuthSession } from "./auth"; const f = createUploadthing(); export const ourFileRouter = { imageUploader: f({ image: { maxFileSize: "4MB" } }) .middleware(async ({ req, res }) => { const session = await getServerAuthSession({ req, res }); if (!session) throw new UploadThingError("Unauthorized"); return { userId: session.user.id }; }) .onUploadComplete(async ({ metadata, file }) => { // This code RUNS ON YOUR SERVER after upload console.log("Upload complete for userId:", metadata.userId); console.log("file url", file.url); return { uploadedBy: metadata.userId }; }), } satisfies FileRouter; export type OurFileRouter = typeof ourFileRouter;