diff --git a/app/(content)/(home)/home/page.tsx b/app/(content)/(home)/home/page.tsx index 836569df382b537be8f63fd9708c688694046e6f..89b396f4341ea318704cef9796da60f2877b1a86 100644 --- a/app/(content)/(home)/home/page.tsx +++ b/app/(content)/(home)/home/page.tsx @@ -2,6 +2,7 @@ import LikeButton from "@/components/like-button"; import PostMessageForm from "@/components/post-messages"; import { prisma } from "@/lib/db"; import { Prisma } from "@prisma/client"; +/* export const revalidate = 5; */ // revalidate this page every 60 seconds type messageType = Prisma.PostUncheckedCreateInput type messageItemProps = { diff --git a/app/api/messages/route.ts b/app/api/messages/route.ts index f2799ef31835ce1098f169c3ceb8f5a3ccae1768..c5eecd2adf82a3e5801c6e7c537752315a347dce 100644 --- a/app/api/messages/route.ts +++ b/app/api/messages/route.ts @@ -1,31 +1,53 @@ 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"; +import { revalidatePath, revalidateTag } from "next/cache"; + +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) + console.log("router data: " + data.content, "status:") + try { await prisma.post.create({ - data: data + /* data: data */ + data:{ + content: data.content, + userId: parseInt(userId), + published: true + } }) + console.log("created") + const path = req.nextUrl.searchParams.get('path') || '/'; + revalidatePath(path); 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") } export async function GET(req: NextRequest, res: NextResponse) { - const data = await req.json() - console.log("router data: " + data, "status:") + try { + const data = await req.json() + console.log("router data: " + data, "status:") + } catch (error) { + + } - console.log(data) try { const messages = await prisma.post.findMany({ orderBy: { diff --git a/components/post-messages.tsx b/components/post-messages.tsx index 040013e7643fc30579ec6475dd21e102e0ff7979..a870e16e391d2d34bd17b962d7f1c189486fd24a 100644 --- a/components/post-messages.tsx +++ b/components/post-messages.tsx @@ -2,25 +2,24 @@ 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 const response = await fetch('http://localhost:3000/api/messages', { method: 'POST', - body: JSON.stringify(formData) + body: JSON.stringify(formData), + next: { tags: ['collection'] } }) + startTransition(() => { // Refresh the current route and fetch new data from the server without // losing client-side browser or React state. @@ -30,7 +29,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 index e4d9a09eedc92a4aba1241db23ca0573cfd3cc78..007c24c324ca76134e48a92417b217cfb5c5898a 100644 --- a/types/next-auth.d.ts +++ b/types/next-auth.d.ts @@ -3,7 +3,7 @@ import 'next-auth'; declare module 'next-auth' { interface Session { user: { - id: number; + id: string; name?: string | null; email?: string | null; image?: string | null;