diff --git a/src/app/api/mii/[id]/like/route.ts b/src/app/api/mii/[id]/like/route.ts index 3a1e213..3dbea23 100644 --- a/src/app/api/mii/[id]/like/route.ts +++ b/src/app/api/mii/[id]/like/route.ts @@ -6,54 +6,54 @@ import { idSchema } from "@/lib/schemas"; import { RateLimit } from "@/lib/rate-limit"; export async function PATCH(request: NextRequest, { params }: { params: Promise<{ id: string }> }) { - const session = await auth(); - if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); + // const session = await auth(); + // if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); - const rateLimit = new RateLimit(request, 100, "/api/mii/like"); - const check = await rateLimit.handle(); - if (check) return check; + // const rateLimit = new RateLimit(request, 100, "/api/mii/like"); + // const check = await rateLimit.handle(); + // if (check) return check; - const { id: slugId } = await params; - const parsed = idSchema.safeParse(slugId); - if (!parsed.success) return rateLimit.sendResponse({ error: parsed.error.issues[0].message }, 400); - const miiId = parsed.data; + // const { id: slugId } = await params; + // const parsed = idSchema.safeParse(slugId); + // if (!parsed.success) return rateLimit.sendResponse({ error: parsed.error.issues[0].message }, 400); + // const miiId = parsed.data; - const result = await prisma.$transaction(async (tx) => { - const existingLike = await tx.like.findUnique({ - where: { - userId_miiId: { - userId: Number(session.user?.id), - miiId, - }, - }, - }); + // const result = await prisma.$transaction(async (tx) => { + // const existingLike = await tx.like.findUnique({ + // where: { + // userId_miiId: { + // userId: Number(session.user?.id), + // miiId, + // }, + // }, + // }); - if (existingLike) { - // Remove the like if it exists - await tx.like.delete({ - where: { - userId_miiId: { - userId: Number(session.user?.id), - miiId, - }, - }, - }); - } else { - // Add a like if it doesn't exist - await tx.like.create({ - data: { - userId: Number(session.user?.id), - miiId, - }, - }); - } + // if (existingLike) { + // // Remove the like if it exists + // await tx.like.delete({ + // where: { + // userId_miiId: { + // userId: Number(session.user?.id), + // miiId, + // }, + // }, + // }); + // } else { + // // Add a like if it doesn't exist + // await tx.like.create({ + // data: { + // userId: Number(session.user?.id), + // miiId, + // }, + // }); + // } - const likeCount = await tx.like.count({ - where: { miiId }, - }); + // const likeCount = await tx.like.count({ + // where: { miiId }, + // }); - return { liked: !existingLike, count: likeCount }; - }); + // return { liked: !existingLike, count: likeCount }; + // }); - return rateLimit.sendResponse({ success: true, liked: result.liked, count: result.count }); + return rateLimit.sendResponse({ success: false }); } diff --git a/src/app/api/mii/has-liked/route.ts b/src/app/api/mii/has-liked/route.ts index ecb0e87..f064c4d 100644 --- a/src/app/api/mii/has-liked/route.ts +++ b/src/app/api/mii/has-liked/route.ts @@ -4,25 +4,26 @@ import { prisma } from "@/lib/prisma"; import { RateLimit } from "@/lib/rate-limit"; export async function GET(request: NextRequest) { - const session = await auth(); - if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); + // const session = await auth(); + // if (!session) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); - const rateLimit = new RateLimit(request, 50, "/api/mii/like_get"); - const check = await rateLimit.handle(); - if (check) return check; + // const rateLimit = new RateLimit(request, 50, "/api/mii/like_get"); + // const check = await rateLimit.handle(); + // if (check) return check; - const idsParam = new URL(request.url).searchParams.get("ids"); - if (!idsParam) return NextResponse.json({ error: "Missing IDs parameter" }, { status: 400 }); + // const idsParam = new URL(request.url).searchParams.get("ids"); + // if (!idsParam) return NextResponse.json({ error: "Missing IDs parameter" }, { status: 400 }); - const ids = idsParam.split(",").map(Number).filter(Boolean); - if (!ids.length) return NextResponse.json({ error: "No valid IDs provided" }, { status: 400 }); - if (ids.length > 100) return NextResponse.json({ error: "Too many IDs, maximum is 100" }, { status: 400 }); + // const ids = idsParam.split(",").map(Number).filter(Boolean); + // if (!ids.length) return NextResponse.json({ error: "No valid IDs provided" }, { status: 400 }); + // if (ids.length > 100) return NextResponse.json({ error: "Too many IDs, maximum is 100" }, { status: 400 }); - const liked = await prisma.like.findMany({ - where: { userId: Number(session.user?.id), miiId: { in: ids } }, - select: { miiId: true }, - }); + // const liked = await prisma.like.findMany({ + // where: { userId: Number(session.user?.id), miiId: { in: ids } }, + // select: { miiId: true }, + // }); - // Return only Miis that are liked - return NextResponse.json(liked.map((l) => l.miiId)); + // // Return only Miis that are liked + // return NextResponse.json(liked.map((l) => l.miiId)); + return NextResponse.json({ success: false }, { status: 500 }); } diff --git a/src/components/like-button.tsx b/src/components/like-button.tsx index 7628beb..470864e 100644 --- a/src/components/like-button.tsx +++ b/src/components/like-button.tsx @@ -24,31 +24,31 @@ export default function LikeButton({ likes, isLiked, miiId, disabled, abbreviate const [isAnimating, setIsAnimating] = useState(false); const onClick = async () => { - if (disabled) return; - if (!session.data?.user) { - router.push("/login"); - return; - } + // if (disabled) return; + // if (!session.data?.user) { + // router.push("/login"); + // return; + // } - setIsLikedState(!isLikedState); - setLikesState(isLikedState ? likesState - 1 : likesState + 1); + // setIsLikedState(!isLikedState); + // setLikesState(isLikedState ? likesState - 1 : likesState + 1); - // Trigger animation - if (!isLikedState) { - setIsAnimating(true); - setTimeout(() => setIsAnimating(false), 1000); // match animation duration - } + // // Trigger animation + // if (!isLikedState) { + // setIsAnimating(true); + // setTimeout(() => setIsAnimating(false), 1000); // match animation duration + // } - const response = await fetch(`/api/mii/${miiId}/like`, { method: "PATCH" }); + // const response = await fetch(`/api/mii/${miiId}/like`, { method: "PATCH" }); - if (response.ok) { - const { liked, count } = await response.json(); - setIsLikedState(liked); - setLikesState(count); - } else { - setIsLikedState(isLikedState); - setLikesState(likesState); - } + // if (response.ok) { + // const { liked, count } = await response.json(); + // setIsLikedState(liked); + // setLikesState(count); + // } else { + // setIsLikedState(isLikedState); + // setLikesState(likesState); + // } }; // Preload like button icons @@ -56,9 +56,9 @@ export default function LikeButton({ likes, isLiked, miiId, disabled, abbreviate loadIcons(["icon-park-solid:like", "icon-park-outline:like"]); }, []); - useEffect(() => { - setIsLikedState(isLiked); - }, [isLiked]); + // useEffect(() => { + // setIsLikedState(isLiked); + // }, [isLiked]); return (