"use client" import { Prisma } from "@prisma/client"; import { useRouter } from "next/navigation"; import { startTransition } from "react"; import { Icons } from "./icons"; import { Button } from "./ui/button"; type likeType = Prisma.LikeUncheckedCreateInput type postType = Prisma.PostUncheckedCreateInput type commentType = Prisma.CommentUncheckedCreateInput //type commentWithLikes = Prisma.CommentGetPayload<typeof commentWithPosts> export default function LikeButton(props: { data: any }) { const router = useRouter(); const likeCount = props.data.Like.length /* const likeCount = props.data.likeCount */ const likeArray = props.data.Like /* const likeCount = countLikes(likeArray, props.data); */ async function postLike(e: any) { e.preventDefault() const postLikeData = props.data; const likeData = {} as likeType if (postLikeData.postId == undefined) { likeData.postId = postLikeData.id! } else { likeData.postId = postLikeData.postId likeData.commentId = postLikeData.id } likeData.userId = postLikeData.userId console.log(likeData.commentId) const response = await fetch('http://localhost:3000/api/likes', { method: 'PUT', body: JSON.stringify(likeData) }) startTransition(() => { // Refresh the current route and fetch new data from the server without // losing client-side browser or React state. router.refresh(); }); return await response.json() } return ( <div> <form onSubmit={postLike}> <Button type="submit" variant="ghost" size="lg" className="float-right" > {likeCount} <Icons.heart className="h-3 w-3" /> </Button> </form> </div> ) } function countLikes(likeArray: any, msg: any): number { let likeCount = 0; if (msg.postId == undefined) { likeArray.forEach(function (like: any) { if (like.postId == undefined) { likeCount++; } }) } else { likeArray.forEach(function (like: any) { if (like.postId != undefined) { likeCount++; } }) } return likeCount; }