UNPKG

@oberoncms/plugin-uploadthing

Version:

An Puck component and OberonCMS plugin for embeding uploadthing images

35 lines (34 loc) 1.25 kB
import { createUploadthing, createRouteHandler } from "uploadthing/next"; import { UploadThingError } from "uploadthing/server"; import { getImageSize } from "./get-image-size.js"; const f = createUploadthing(); const initFileRouter = ({ can }) => { const imageMiddleware = async () => { if (!await can("images", "write")) { throw new UploadThingError("Unauthorized"); } return { creator: "unkown" }; }; return { // Define as many FileRoutes as you like, each with a unique routeSlug imageUploader: f({ image: { maxFileSize: "4MB" } }).middleware(imageMiddleware).onUploadComplete(async ({ metadata: _metadata, file: { url } }) => { const { width, height } = await getImageSize(url); return { width, height }; }), singleImageUploader: f({ image: { maxFileSize: "4MB", maxFileCount: 1 } }).middleware(imageMiddleware).onUploadComplete(async ({ metadata: _metadata, file: { url } }) => { const { width, height } = await getImageSize(url); return { width, height }; }) }; }; function initRouteHandler(adapter) { return createRouteHandler({ router: initFileRouter(adapter), config: { callbackUrl: "/cms/api/uploadthing" } }); } export { initRouteHandler };