diff --git a/components/frontend/src/lib/components/hackathon/TeamCard.svelte b/components/frontend/src/lib/components/hackathon/TeamCard.svelte index 14ac4a37..e1bb6d27 100644 --- a/components/frontend/src/lib/components/hackathon/TeamCard.svelte +++ b/components/frontend/src/lib/components/hackathon/TeamCard.svelte @@ -125,9 +125,16 @@ {/if} - - - More Information - + + {#if moreInfoHref.startsWith('/')} + + + More Information + + {/if} diff --git a/components/frontend/src/routes/(app)/my/hackathon/[id]/teams/+page.svelte b/components/frontend/src/routes/(app)/my/hackathon/[id]/teams/+page.svelte index 0f0bff1b..2c420789 100644 --- a/components/frontend/src/routes/(app)/my/hackathon/[id]/teams/+page.svelte +++ b/components/frontend/src/routes/(app)/my/hackathon/[id]/teams/+page.svelte @@ -84,6 +84,10 @@

{:else} {#each pagedTeams as team (team.id)} + {/each} {/if} diff --git a/components/frontend/src/routes/(app)/my/hackathon/[id]/voting/+page.server.ts b/components/frontend/src/routes/(app)/my/hackathon/[id]/voting/+page.server.ts index 30072b8c..8b2c2981 100644 --- a/components/frontend/src/routes/(app)/my/hackathon/[id]/voting/+page.server.ts +++ b/components/frontend/src/routes/(app)/my/hackathon/[id]/voting/+page.server.ts @@ -579,7 +579,14 @@ export const actions: Actions = { }) } if (e instanceof ClientError && e.code === Status.FAILED_PRECONDITION) { - return bad(409, { message: "Voting is not open for this hackathon." }) + // Surface the server's specific reason. SubmitVote answers + // FAILED_PRECONDITION for two distinct states — the votingEnabled + // master switch being off ("voting is closed") and the VOTE capability + // being closed by the current phase (capabilityClosedMessage) — and one + // hardcoded string cannot tell an organiser which of the two to fix. + return bad(409, { + message: e.details || "Voting is not open for this hackathon.", + }) } return formError(e) } diff --git a/components/frontend/src/routes/(app)/my/hackathon/[id]/voting/+page.svelte b/components/frontend/src/routes/(app)/my/hackathon/[id]/voting/+page.svelte index 96bf0e60..dcb4737e 100644 --- a/components/frontend/src/routes/(app)/my/hackathon/[id]/voting/+page.svelte +++ b/components/frontend/src/routes/(app)/my/hackathon/[id]/voting/+page.svelte @@ -125,8 +125,16 @@ -
+ replaces the whole record. + + keepValues, not a bare use:enhance: checked={…} sets the + checkbox PROPERTY, never the defaultChecked attribute, so the + default form.reset() after a successful save reverts the boxes + to unchecked. ownTeamVoting defaults to checked and round-trips + to the same value, so Svelte's reactivity never re-asserts it — + the reset's uncheck sticks, and saving looks like it silently + turned the rule off. --> +

Rules