import { redirect, unstable_createFileUploadHandler, unstable_parseMultipartFormData } from "@remix-run/node"; import { useLoaderData, Form } from "@remix-run/react"; import prisma from "~/utils/db.server"; export async function action({ request, params }) { const threadId = params.threadId; const clonedData = request.clone(); const formData = await clonedData.formData(); const post = formData.get("post"); const fileUploadHandler = unstable_createFileUploadHandler({ directory: './public/uploads/', maxPartSize: 500000, file: ({ filename }) => filename, }); const multiPartformdata = await unstable_parseMultipartFormData(request, fileUploadHandler); let imageName; multiPartformdata.get("image") !== null ? imageName = multiPartformdata.get("image").name : imageName = null; const createPost = await prisma.post.create({ data: { comment: post, imageName: imageName, postId: parseInt(threadId), }, }); return redirect(`/threads/${threadId}`); }; export async function loader({ params }) { const threadId = params.threadId; const thread = await prisma.thread.findUnique({ where: { id: Number(threadId), }, include: { posts: true, }, }); return thread; } export default function Thread() { const data = useLoaderData(); return (
{data.title} Post id: {data.id} Created at: {data.createdAt} Reply count: {data.posts.length}
post image

{data.post}


); }