import { createFileRoute, redirect } from "@tanstack/react-router"; import { tournamentQueries, useTournament, } from "@/features/tournaments/queries"; import { ensureServerQueryData } from "@/lib/tanstack-query/utils/ensure"; import SeedTournament from "@/features/tournaments/components/seed-tournament"; import SetupGroupStage from "@/features/tournaments/components/setup-group-stage"; import GroupStageView from "@/features/tournaments/components/group-stage-view"; import { Container, Stack, Divider, Title, Box, Card, Group, Skeleton, SimpleGrid } from "@mantine/core"; import BracketView from "@/features/bracket/components/bracket-view"; import { SpotifyControlsBar } from "@/features/spotify/components"; import { useIsAdmin } from "@/features/core/hooks/use-is-admin"; import { useTournamentRunState } from "@/features/tournaments/hooks/use-tournament-run-state"; import { Trans } from "@lingui/react/macro"; import { msg } from "@lingui/core/macro"; export const Route = createFileRoute("/_authed/admin/tournaments/run/$id")({ beforeLoad: async ({ context, params }) => { const { queryClient } = context; const tournament = await ensureServerQueryData( queryClient, tournamentQueries.details(params.id) ); if (!tournament) throw redirect({ to: "/admin/tournaments" }); return { tournament, }; }, loader: ({ context }) => ({ fullWidth: true, withPadding: false, showSpotifyPanel: true, header: { withBackButton: true, title: msg`Run {name}`, titleValues: { name: context.tournament.name }, }, }), component: RouteComponent, pendingComponent: RunTournamentPending, }); function RunTournamentPending() { return ( {Array.from({ length: 4 }).map((_, index) => ( ))} {Array.from({ length: 6 }).map((_, index) => ( ))} ); } function RouteComponent() { const { id } = Route.useParams(); const { data: tournament } = useTournament(id); const isAdmin = useIsAdmin(); const { hasGroupStage, hasKnockout, knockoutBracketPopulated, nextUpMatchId, bracket } = useTournamentRunState(tournament.matches); return ( { isAdmin && !tournament.regional && } {tournament.matches?.length ? ( hasGroupStage && hasKnockout ? (
<Trans>Knockout Bracket</Trans>
) : hasGroupStage ? ( ) : ( ) ) : ( tournament.regional === true ? ( ) : ( ) )}
); }