Skip to content

Commit cf34dda

Browse files
authored
Reward settings (#389)
* fix: modify api.ts * fix: remove google auth buttom * fix: fixes responsive fixes on organization * fix: minor fixes * fix: modify create organization * fix: modify create organization * fix: fix organization permission * fix: merge into main * feat: hackathon overview page * feat: hackathon overview page * feat: implement participant overview * feat: implement participant overview * feat: implement resources tab * feat: implement the submission tab * feat: implement comment tab * fix: implement provider for hackathon * fix: implement provider for hackathon * fix: minor fixes * fix: hackathon banner * fix: hackathon banner * fix: fix organization page * fix: fix organization page * fix: use transform * fix: add tagline * fix: add tagline * fix: minor fixes * fix: minor fixes * fix: fix timeline and prizes * fix: correct timeline events * fix: implement registration deadline policy * fix: implement registration deadline policy * feat: implement leave hackathon * feat: implement leave hackathon * fix: delete hackathon * fix: implement invite participants * fix: implement participant profile viewing * feat: fetch participants team * fix: redesign hackathon banner * fix: fix hackthon card * fix: fix search bar in blog page * fix: fix search bar in blog page * fix: fix search bar in blog page * fix: fix error in fetching team posts * feat: implement create team, get my team * feat: implement create team, get my team * feat: implement hackathon project submission flow * feat: implement voting for submission * fix: team formation updates * fix: implement team invitation * feat: hackathon submissions bulk actions, ranking and ui refinements * fix: implement empty state for hackathons page * feat: Implement submission visibility and explore submissions * feat: Implement winners tab for hackathon winners display * feat: implement hackathon analytics * fix: fix coderabbit corrections * fix: fix coderabbit corrections * fix: fix coderabbit corrections * fix: fix organization settings data persistence, hackathondrafts and population * feat: fix user profile * feat: Implemented the participant-facing and hackathon organizers announcement features * feat: Implement judging dashboard and detailed breakdowns * feat: Implement judging dashboard and detailed breakdowns * fix: fix coderabbit corrections * fix: submission management ux refinements * fix: submission management ux refinements * fix: submission management ux refinements * fix: submission management ux refinements * fix: submission management ux refinements * feat: Implement published hackathon update and reward distribution endpoint * fix: fix coderabbit corrections * fix: completed all the refinements for the hackathon rewards and settings features. * fix: I've completed the additional targeted fixes for the hackathon rewards system
1 parent 99a87e9 commit cf34dda

42 files changed

Lines changed: 1778 additions & 1017 deletions

Some content is hidden

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

app/(landing)/hackathons/preview/[orgId]/[draftId]/page.tsx

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { useState, useEffect, useMemo } from 'react';
44
import { useRouter, useSearchParams } from 'next/navigation';
55
import { ArrowLeft } from 'lucide-react';
66
import { getDraft, PrizeTier, VenueType } from '@/lib/api/hackathons';
7+
import { getOrganization } from '@/lib/api/organization';
78
import { HackathonBanner } from '@/components/hackathons/hackathonBanner';
89
import { HackathonNavTabs } from '@/components/hackathons/hackathonNavTabs';
910
import { HackathonOverview } from '@/components/hackathons/overview/hackathonOverview';
@@ -93,6 +94,18 @@ export default function DraftPreviewPage({ params }: PreviewPageProps) {
9394
resolvedParams.orgId,
9495
resolvedParams.draftId
9596
);
97+
let organizationData = { name: '', logo: '' };
98+
try {
99+
const orgRes = await getOrganization(resolvedParams.orgId);
100+
if (orgRes) {
101+
organizationData = {
102+
name: orgRes.name,
103+
logo: orgRes.logo || '',
104+
};
105+
}
106+
} catch (orgErr) {
107+
console.error('Failed to fetch organization for preview:', orgErr);
108+
}
96109

97110
if (response.success && response.data) {
98111
const draft = response.data;
@@ -111,8 +124,8 @@ export default function DraftPreviewPage({ params }: PreviewPageProps) {
111124
organizationId: resolvedParams.orgId,
112125
organization: {
113126
id: resolvedParams.orgId,
114-
name: '', // We don't have organizer name from draft
115-
logo: '',
127+
name: organizationData.name,
128+
logo: organizationData.logo,
116129
},
117130

118131
status: 'DRAFT',
@@ -144,6 +157,12 @@ export default function DraftPreviewPage({ params }: PreviewPageProps) {
144157
submissionDeadline: draft.data.timeline?.submissionDeadline || '',
145158
registrationDeadline:
146159
draft.data.participation?.registrationDeadline || '',
160+
judgingStart: draft.data.timeline?.judgingStart || '',
161+
judgingEnd: draft.data.timeline?.judgingEnd || '',
162+
winnersAnnouncedAt:
163+
draft.data.timeline?.winnersAnnouncedAt ||
164+
draft.data.timeline?.winnerAnnouncementDate ||
165+
'',
147166
customRegistrationDeadline:
148167
draft.data.participation?.registrationDeadline || null,
149168

app/(landing)/organizations/[id]/hackathons/[hackathonId]/rewards/page.tsx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import PublishWinnersWizard from '@/components/organization/hackathons/rewards/P
77
import { RewardsPageHeader } from '@/components/organization/hackathons/rewards/RewardsPageHeader';
88
import { RewardsPageContent } from '@/components/organization/hackathons/rewards/RewardsPageContent';
99
import { useHackathonRewards } from '@/hooks/use-hackathon-rewards';
10+
import { useRewardDistributionStatus } from '@/hooks/use-reward-distribution-status';
1011
import { useRankAssignment } from '@/hooks/use-rank-assignment';
1112
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
1213
import { AuthGuard } from '@/components/auth';
@@ -27,11 +28,21 @@ export default function RewardsPage() {
2728
isLoadingSubmissions,
2829
error,
2930
refreshEscrow,
31+
refetchHackathon,
32+
resultsPublished,
33+
hackathon,
3034
} = useHackathonRewards(organizationId, hackathonId);
3135

3236
const { handleRankChange } = useRankAssignment();
3337
const [isPublishWizardOpen, setIsPublishWizardOpen] = useState(false);
3438

39+
const {
40+
distributionStatus,
41+
isLoading: isLoadingDistributionStatus,
42+
error: distributionError,
43+
refetch: refetchDistributionStatus,
44+
} = useRewardDistributionStatus(organizationId, hackathonId);
45+
3546
const maxRank = useMemo(() => prizeTiers.length, [prizeTiers.length]);
3647
const winners = useMemo(
3748
() => submissions.filter(s => s.rank && s.rank <= maxRank),
@@ -56,6 +67,8 @@ export default function RewardsPage() {
5667

5768
const handlePublishSuccess = () => {
5869
refreshEscrow();
70+
refetchDistributionStatus();
71+
refetchHackathon();
5972
};
6073

6174
return (
@@ -85,6 +98,14 @@ export default function RewardsPage() {
8598
</Alert>
8699
)}
87100

101+
{!isLoading && distributionError && (
102+
<Alert variant='destructive' className='mb-8'>
103+
<AlertCircle className='h-4 w-4' />
104+
<AlertTitle>Distribution Status Error</AlertTitle>
105+
<AlertDescription>{distributionError}</AlertDescription>
106+
</Alert>
107+
)}
108+
88109
{!isLoading && !error && (
89110
<RewardsPageContent
90111
submissions={submissions}
@@ -95,6 +116,11 @@ export default function RewardsPage() {
95116
hasWinners={hasWinners}
96117
onPublishClick={() => setIsPublishWizardOpen(true)}
97118
onRankChange={handleRankChangeWrapper}
119+
distributionStatus={distributionStatus}
120+
isLoadingDistributionStatus={isLoadingDistributionStatus}
121+
onRefreshDistributionStatus={refetchDistributionStatus}
122+
resultsPublished={resultsPublished}
123+
escrowAddress={hackathon?.escrowAddress || hackathon?.contractId}
98124
/>
99125
)}
100126

0 commit comments

Comments
 (0)