'use client'; import { use } from 'react'; import { trpc } from '@/lib/trpc/client'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { DeliberationRankingForm } from '@/components/jury/deliberation-ranking-form'; import { CheckCircle2 } from 'lucide-react'; import { toast } from 'sonner'; export default function JuryDeliberationPage({ params: paramsPromise }: { params: Promise<{ sessionId: string }> }) { const params = use(paramsPromise); const utils = trpc.useUtils(); const { data: session, isLoading } = trpc.deliberation.getSession.useQuery({ sessionId: params.sessionId }); const submitVoteMutation = trpc.deliberation.submitVote.useMutation({ onSuccess: () => { utils.deliberation.getSession.invalidate(); toast.success('Vote submitted successfully'); }, onError: (err) => { toast.error(err.message); } }); const handleSubmitVote = (votes: Array<{ projectId: string; rank?: number; isWinnerPick?: boolean }>) => { votes.forEach((vote) => { submitVoteMutation.mutate({ sessionId: params.sessionId, juryMemberId: session?.currentUser?.id || '', projectId: vote.projectId, rank: vote.rank, isWinnerPick: vote.isWinnerPick }); }); }; if (isLoading) { return (

Loading session...

); } if (!session) { return (

Session not found

); } const hasVoted = session.currentUser?.hasVoted; if (session.status !== 'DELIB_VOTING') { return (
Deliberation Session {session.round?.name} - {session.category}

{session.status === 'DELIB_OPEN' ? 'Voting has not started yet. Please wait for the admin to open voting.' : session.status === 'DELIB_TALLYING' ? 'Voting is closed. Results are being tallied.' : 'This session is locked.'}

); } if (hasVoted) { return (
Deliberation Session {session.round?.name} - {session.category}
{session.status}

Vote Submitted

Thank you for your participation in this deliberation

); } return (
Deliberation Session {session.round?.name} - {session.category}
{session.status}

{session.mode === 'SINGLE_WINNER_VOTE' ? 'Select your top choice for this category.' : 'Rank all projects from best to least preferred.'}

); }