From 93f06389372f720676eb1e98bc723ae40e8eb303 Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Tue, 22 Oct 2024 22:26:46 +0300 Subject: [PATCH] FIx can't delete tournaments as normal user --- app/features/calendar/routes/calendar.$id.tsx | 26 +++++++++++++------ .../core/Tournament.server.ts | 5 +++- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/features/calendar/routes/calendar.$id.tsx b/app/features/calendar/routes/calendar.$id.tsx index 3d7adf58d..7293a92de 100644 --- a/app/features/calendar/routes/calendar.$id.tsx +++ b/app/features/calendar/routes/calendar.$id.tsx @@ -25,7 +25,10 @@ import { requireUserId } from "~/features/auth/core/user.server"; import * as CalendarRepository from "~/features/calendar/CalendarRepository.server"; import * as ShowcaseTournaments from "~/features/front-page/core/ShowcaseTournaments.server"; import { MapPool } from "~/features/map-list-generator/core/map-pool"; -import { clearTournamentDataCache } from "~/features/tournament-bracket/core/Tournament.server"; +import { + clearTournamentDataCache, + tournamentManagerData, +} from "~/features/tournament-bracket/core/Tournament.server"; import { useIsMounted } from "~/hooks/useIsMounted"; import { i18next } from "~/modules/i18n/i18next.server"; import { @@ -66,13 +69,20 @@ export const action: ActionFunction = async ({ params, request }) => { await CalendarRepository.findById({ id: parsedParams.id }), ); - validate( - canDeleteCalendarEvent({ - user, - event, - startTime: databaseTimestampToDate(event.startTimes[0]), - }), - ); + if (event.tournamentId) { + validate( + tournamentManagerData(event.tournamentId).stage.length === 0, + "Tournament has already started", + ); + } else { + validate( + canDeleteCalendarEvent({ + user, + event, + startTime: databaseTimestampToDate(event.startTimes[0]), + }), + ); + } await CalendarRepository.deleteById({ eventId: event.eventId, diff --git a/app/features/tournament-bracket/core/Tournament.server.ts b/app/features/tournament-bracket/core/Tournament.server.ts index 4f0ac9886..201e7560c 100644 --- a/app/features/tournament-bracket/core/Tournament.server.ts +++ b/app/features/tournament-bracket/core/Tournament.server.ts @@ -9,8 +9,11 @@ import { getServerTournamentManager } from "./brackets-manager/manager.server"; const manager = getServerTournamentManager(); +export const tournamentManagerData = (tournamentId: number) => + manager.get.tournamentData(tournamentId); + const combinedTournamentData = async (tournamentId: number) => ({ - data: manager.get.tournamentData(tournamentId), + data: tournamentManagerData(tournamentId), ctx: notFoundIfFalsy(await TournamentRepository.findById(tournamentId)), });