diff --git a/app/api/messages/route.ts b/app/api/messages/route.ts index f2799ef31835ce1098f169c3ceb8f5a3ccae1768..e1ed88082e58806233a3c22405a3ff8a04cb30f8 100644 --- a/app/api/messages/route.ts +++ b/app/api/messages/route.ts @@ -1,22 +1,40 @@ import { prisma } from "@/lib/db" import { NextRequest, NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "../auth/[...nextauth]/route"; +import { Prisma } from "@prisma/client"; +type post = Prisma.PostUncheckedCreateInput export async function POST(req: NextRequest) { + + const session = await getServerSession(authOptions); + + if (!session) { + return NextResponse.json({ status: 401 }); + } + + const userId = session.user.id + const data = await req.json() + + console.log("router data: " + data, "status:") - console.log(data) try { await prisma.post.create({ - data: data + /* data: data */ + data:{ + content: data.content, + userId: parseInt(userId), + published: true + } }) + console.log("created") return NextResponse.json({ status: 201, message: 'Message Created' }) - // res.status(200).json({message: 'Message Created'}) - // res.status(200).json({message: 'Message Created'}) + } catch (error) { console.log("fail" + error); - // res.status(400) } console.log("post") } diff --git a/components/post-messages.tsx b/components/post-messages.tsx index 040013e7643fc30579ec6475dd21e102e0ff7979..96bf8e193771593847688fb45c175a3a4e7697a1 100644 --- a/components/post-messages.tsx +++ b/components/post-messages.tsx @@ -2,21 +2,19 @@ import { Post, Prisma } from "@prisma/client"; import { useRouter } from "next/navigation"; -import { startTransition, useState } from "react"; +import { startTransition, useEffect, useState } from "react"; type messageType = Prisma.PostUncheckedCreateInput export default function PostMessageForm(props: { data: Post[] | null }) { const [formData, setFormData] = useState<messageType>({ content: "" } as messageType); - // const [messagesState, setMessages] = useState(props.data) const router = useRouter(); async function postMessage(e: any) { e.preventDefault() - // setMessages([...messagesState, formData]) console.log(formData) - formData.userId = 1 +/* formData.userId = 1 */ const response = await fetch('http://localhost:3000/api/messages', { method: 'POST', body: JSON.stringify(formData) @@ -30,7 +28,7 @@ export default function PostMessageForm(props: { data: Post[] | null }) { } const characterCount = formData.content.length; - const isOverLimit = characterCount > 1000; + const isOverLimit = characterCount >= 1000; const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => { const { value } = e.target; diff --git a/types/next-auth.d.ts b/types/next-auth.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..007c24c324ca76134e48a92417b217cfb5c5898a --- /dev/null +++ b/types/next-auth.d.ts @@ -0,0 +1,12 @@ +import 'next-auth'; + +declare module 'next-auth' { + interface Session { + user: { + id: string; + name?: string | null; + email?: string | null; + image?: string | null; + }; + } +} \ No newline at end of file