From 39a5c7d2f16c5f775df2c9444efde6b9d8cb599e Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Thu, 28 Nov 2024 23:03:49 +0200 Subject: [PATCH] Enable subs tab toggle --- app/db/tables.ts | 2 ++ .../calendar/CalendarRepository.server.ts | 3 ++ .../calendar/actions/calendar.new.server.ts | 2 ++ app/features/calendar/routes/calendar.new.tsx | 28 +++++++++++++++++++ .../tournament-bracket/core/Tournament.ts | 2 +- 5 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/db/tables.ts b/app/db/tables.ts index 1f7784a61..a55375e40 100644 --- a/app/db/tables.ts +++ b/app/db/tables.ts @@ -414,6 +414,8 @@ export interface TournamentSettings { thirdPlaceMatch?: boolean; isRanked?: boolean; enableNoScreenToggle?: boolean; + /** Enable the subs tab, default true */ + enableSubs?: boolean; deadlines?: "STRICT" | "DEFAULT"; requireInGameNames?: boolean; isInvitational?: boolean; diff --git a/app/features/calendar/CalendarRepository.server.ts b/app/features/calendar/CalendarRepository.server.ts index 909602df9..aed9bb941 100644 --- a/app/features/calendar/CalendarRepository.server.ts +++ b/app/features/calendar/CalendarRepository.server.ts @@ -474,6 +474,7 @@ type CreateArgs = Pick< isInvitational?: boolean; deadlines: TournamentSettings["deadlines"]; enableNoScreenToggle?: boolean; + enableSubs?: boolean; autonomousSubs?: boolean; regClosesAt?: number; rules: string | null; @@ -506,6 +507,7 @@ export async function create(args: CreateArgs) { deadlines: args.deadlines, isInvitational: args.isInvitational, enableNoScreenToggle: args.enableNoScreenToggle, + enableSubs: args.enableSubs, autonomousSubs: args.autonomousSubs, regClosesAt: args.regClosesAt, requireInGameNames: args.requireInGameNames, @@ -655,6 +657,7 @@ export async function update(args: UpdateArgs) { deadlines: args.deadlines, isInvitational: args.isInvitational, enableNoScreenToggle: args.enableNoScreenToggle, + enableSubs: args.enableSubs, autonomousSubs: args.autonomousSubs, regClosesAt: args.regClosesAt, requireInGameNames: args.requireInGameNames, diff --git a/app/features/calendar/actions/calendar.new.server.ts b/app/features/calendar/actions/calendar.new.server.ts index ab6409f00..256ecc469 100644 --- a/app/features/calendar/actions/calendar.new.server.ts +++ b/app/features/calendar/actions/calendar.new.server.ts @@ -98,6 +98,7 @@ export const action: ActionFunction = async ({ request }) => { isInvitational: data.isInvitational ?? false, deadlines: data.strictDeadline ? ("STRICT" as const) : ("DEFAULT" as const), enableNoScreenToggle: data.enableNoScreenToggle ?? undefined, + enableSubs: data.enableSubs ?? undefined, requireInGameNames: data.requireInGameNames ?? undefined, autonomousSubs: data.autonomousSubs ?? undefined, swissGroupCount: data.swissGroupCount ?? undefined, @@ -274,6 +275,7 @@ export const newCalendarEventActionSchema = z checkboxValueToBoolean, z.boolean().nullish(), ), + enableSubs: z.preprocess(checkboxValueToBoolean, z.boolean().nullish()), autonomousSubs: z.preprocess(checkboxValueToBoolean, z.boolean().nullish()), strictDeadline: z.preprocess(checkboxValueToBoolean, z.boolean().nullish()), isInvitational: z.preprocess(checkboxValueToBoolean, z.boolean().nullish()), diff --git a/app/features/calendar/routes/calendar.new.tsx b/app/features/calendar/routes/calendar.new.tsx index 8fa19d050..88b5fdd13 100644 --- a/app/features/calendar/routes/calendar.new.tsx +++ b/app/features/calendar/routes/calendar.new.tsx @@ -239,6 +239,7 @@ function EventForm() { + + + + + Allow users to sign up as "subs" in addition to the normal event + sign-up. + + + ); +} + function AutonomousSubsToggle() { const baseEvent = useBaseEvent(); const [autonomousSubs, setAutonomousSubs] = React.useState( diff --git a/app/features/tournament-bracket/core/Tournament.ts b/app/features/tournament-bracket/core/Tournament.ts index c23f43a6c..b4eabbaaf 100644 --- a/app/features/tournament-bracket/core/Tournament.ts +++ b/app/features/tournament-bracket/core/Tournament.ts @@ -782,7 +782,7 @@ export class Tournament { } get subsFeatureEnabled() { - return !this.isInvitational; + return this.ctx.settings.enableSubs ?? true; } get canAddNewSubPost() {