diff --git a/app/(landing)/organizations/[id]/hackathons/[hackathonId]/page.tsx b/app/(landing)/organizations/[id]/hackathons/[hackathonId]/page.tsx index 346e2a8a..cf532317 100644 --- a/app/(landing)/organizations/[id]/hackathons/[hackathonId]/page.tsx +++ b/app/(landing)/organizations/[id]/hackathons/[hackathonId]/page.tsx @@ -29,10 +29,11 @@ export default function HackathonPage() { autoFetch: false, }); - const { analytics, loading: analyticsLoading } = useHackathonAnalytics( - organizationId, - hackathonId - ); + const { + analytics, + loading: analyticsLoading, + error: analyticsError, + } = useHackathonAnalytics(organizationId, hackathonId); useEffect(() => { if (organizationId && hackathonId) { @@ -113,6 +114,18 @@ export default function HackathonPage() { Analytics + {analyticsError && ( + + + Unable to load analytics + + {analyticsError} + + + )} +
Loading draft... @@ -224,7 +224,7 @@ export default function NewHackathonTab({ if (currentError) { return ( -
+
{currentError}
diff --git a/components/organization/tabs/ProfileTab.tsx b/components/organization/tabs/ProfileTab.tsx index 3373b2df..2f431811 100644 --- a/components/organization/tabs/ProfileTab.tsx +++ b/components/organization/tabs/ProfileTab.tsx @@ -172,18 +172,23 @@ export default function ProfileTab({ const previousOrgId = previousOrgIdRef.current; if (currentOrgId && currentOrgId !== previousOrgId) { + // Find links either top-level or in metadata + const activeLinks = + activeOrg.links || (activeOrg as any).metadata?.links; + setFormData({ name: activeOrg.name || '', slug: activeOrg.slug || '', logo: activeOrg.logo || '', metadata: { - tagline: activeOrg.metadata?.tagline || '', - about: activeOrg.metadata?.about || '', + tagline: + activeOrg.tagline || (activeOrg as any).metadata?.tagline || '', + about: activeOrg.about || (activeOrg as any).metadata?.about || '', links: { - website: activeOrg.metadata?.links?.website || '', - x: activeOrg.metadata?.links?.x || '', - github: activeOrg.metadata?.links?.github || '', - others: activeOrg.metadata?.links?.others || '', + website: activeLinks?.website || '', + x: activeLinks?.x || '', + github: activeLinks?.github || '', + others: activeLinks?.others || '', }, }, }); @@ -576,7 +581,7 @@ export default function ProfileTab({
- +

JPEG or PNG, max 2MB

Recommended: 480 × 480 px

@@ -625,7 +630,7 @@ export default function ProfileTab({
{hasUserChanges && !isCreating && (
-
+
You have unsaved changes
)} diff --git a/hooks/use-hackathons.ts b/hooks/use-hackathons.ts index 3192383d..d95b648d 100644 --- a/hooks/use-hackathons.ts +++ b/hooks/use-hackathons.ts @@ -280,8 +280,8 @@ export function useHackathons( totalPages: response.meta.pagination.totalPages, totalItems: response.meta.pagination.total, itemsPerPage: response.meta.pagination.limit, - hasNext: false, // Not provided in this pagination structure - hasPrev: false, // Not provided in this pagination structure + hasNext: false, + hasPrev: false, } : { currentPage: 1, @@ -415,16 +415,14 @@ export function useHackathons( data, autoSave ); - if (response.data && response.data.data) { + if (response.data) { setDrafts(prev => - prev.map(draft => - draft.id === draftId ? response.data!.data : draft - ) + prev.map(draft => (draft.id === draftId ? response.data! : draft)) ); if (currentDraft?.id === draftId) { - setCurrentDraft(response.data.data); + setCurrentDraft(response.data); } - return response.data.data; + return response.data; } else { throw new Error('No draft data received'); } diff --git a/lib/api/hackathons.ts b/lib/api/hackathons.ts index 252856d3..8c4cabf8 100644 --- a/lib/api/hackathons.ts +++ b/lib/api/hackathons.ts @@ -1158,7 +1158,7 @@ export const updateDraftStep = async ( data: any, autoSave?: boolean ) => { - const res = await api.patch>( + const res = await api.patch( `/organizations/${organizationId}/hackathons/draft/${draftId}`, { step, @@ -1191,11 +1191,11 @@ export const getDraft = async ( organizationId: string, draftId: string ): Promise => { - const res = await api.get>( + const res = await api.get( `/organizations/${organizationId}/hackathons/draft/${draftId}` ); - return res.data.data as GetDraftResponse; + return res.data; }; /**