From 0694e4dea0cf970cbaafd087fe95c40f59eb1fc1 Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Mon, 14 Apr 2025 17:22:01 +0800 Subject: [PATCH] feat(problemset): add completion status indicator for problems --- src/app/(app)/problemset/page.tsx | 36 ++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/app/(app)/problemset/page.tsx b/src/app/(app)/problemset/page.tsx index c541c03..ddff828 100644 --- a/src/app/(app)/problemset/page.tsx +++ b/src/app/(app)/problemset/page.tsx @@ -8,6 +8,8 @@ import { TableRow, } from "@/components/ui/table"; import prisma from "@/lib/prisma"; +import { auth } from "@/lib/auth"; +import { CircleCheckBigIcon } from "lucide-react"; import { getDifficultyColorClass } from "@/lib/utils"; export default async function ProblemsetPage() { @@ -23,11 +25,28 @@ export default async function ProblemsetPage() { }, }); + const session = await auth(); + + let completedProblems: string[] = []; + if (session?.user) { + const submissions = await prisma.submission.findMany({ + where: { + userId: session.user.id, + status: "AC", + }, + select: { + problemId: true, + }, + }); + + completedProblems = submissions.map(sub => sub.problemId); + } + return ( - Id + Status Title Difficulty @@ -40,19 +59,20 @@ export default async function ProblemsetPage() { className="h-10 border-b-0 odd:bg-muted/50 hover:text-blue-500 hover:bg-muted" > - - {index + 1} - + {session?.user && completedProblems.includes(problem.id) && ( + - {problem.title} + {index + 1}. {problem.title}