Skip to content

Commit cec87b1

Browse files
Merge branch 'master' into voyager-ship/hackathons-stages
2 parents 247363a + a8072b0 commit cec87b1

99 files changed

Lines changed: 2204 additions & 1315 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/(home)/build-games/page.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ import BuildGamesPartners from "@/components/build-games/BuildGamesPartners";
99
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@/components/ui/accordion";
1010
import type { Metadata } from "next";
1111

12-
// Render at request time. The Mentors/Partners/Resources sections hit
13-
// Prisma → Neon via getHackathon(); Neon's autosuspend can refuse the
14-
// build-time connection and break the entire static page generation.
1512
export const dynamic = "force-dynamic";
1613

1714
export const metadata: Metadata = {

app/(home)/events/[id]/evaluate/page.tsx

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import { getAuthSession } from "@/lib/auth/authSession";
33
import { prisma } from "@/prisma/prisma";
44
import {
55
canEvaluateHackathon,
6+
canManageEvaluationPhase,
67
canManageHackathonJudges,
78
} from "@/lib/auth/permissions";
9+
import { stripEvaluationsForViewer } from "@/lib/hackathons/evaluation-phase";
810
import { HackathonEvaluateDashboard } from "@/components/evaluate/HackathonEvaluateDashboard";
911

1012
export default async function HackathonEvaluatePage({
@@ -22,7 +24,13 @@ export default async function HackathonEvaluatePage({
2224

2325
const hackathon = await prisma.hackathon.findUnique({
2426
where: { id: hackathonId },
25-
select: { id: true, title: true, start_date: true, end_date: true },
27+
select: {
28+
id: true,
29+
title: true,
30+
start_date: true,
31+
end_date: true,
32+
evaluation_phase: true,
33+
},
2634
});
2735
if (!hackathon) {
2836
redirect("/events");
@@ -79,6 +87,15 @@ export default async function HackathonEvaluatePage({
7987
},
8088
});
8189

90+
const viewerId = session!.user!.id;
91+
const projectsForViewer = stripEvaluationsForViewer(
92+
projects,
93+
hackathon.evaluation_phase,
94+
viewerId,
95+
);
96+
97+
const reviewedCount = projects.filter((p) => p.evaluations.length > 0).length;
98+
8299
return (
83100
<main className="container relative px-4 py-8 lg:py-12">
84101
<div className="mb-6 flex flex-col gap-1">
@@ -93,9 +110,12 @@ export default async function HackathonEvaluatePage({
93110
</div>
94111
<HackathonEvaluateDashboard
95112
hackathonId={hackathon.id}
96-
viewerId={session!.user!.id}
113+
viewerId={viewerId}
97114
canPickWinners={canManageHackathonJudges(session)}
98-
projects={projects.map((p) => ({
115+
canManagePhase={canManageEvaluationPhase(session)}
116+
initialPhase={hackathon.evaluation_phase}
117+
initialReviewed={reviewedCount}
118+
projects={projectsForViewer.map((p) => ({
99119
...p,
100120
created_at: p.created_at.toISOString(),
101121
evaluations: p.evaluations.map((e) => ({

0 commit comments

Comments
 (0)