brackt/app/routes/leagues/$leagueId.standings.$seasonId.teams.$teamId.tsx
Claude 4cb7424ae4
Address code review feedback on draft order bug fix
- Move buildDraftOrderTeams to app/lib/draft-order.ts so it is importable
  and testable; remove the local copy from the settings component
- Add unit tests for buildDraftOrderTeams covering the empty, full, and
  partial-slot cases
- Tighten the draft slot guard from existingSlots.length > 0 to
  existingSlots.length === currentTeamCount so partial legacy states are
  treated the same as "order not set"
- Condense the 3-line server comment to a single line per project style
- Rename getNumTeamsInSeason → getNumDraftSlotsBySeasonId to reflect what
  the function actually counts, and update its one call site
- Add tests for the server-side slot-creation guard logic

https://claude.ai/code/session_01M3H55gnMxRztJK9KMXqqZo
2026-05-20 01:07:34 +00:00

58 lines
1.6 KiB
TypeScript

import { useLoaderData } from "react-router";
import type { Route } from "./+types/$leagueId.standings.$seasonId.teams.$teamId";
import { TeamScoreBreakdown } from "~/components/standings/TeamScoreBreakdown";
import { getTeamScoreBreakdown, getTeamStanding } from "~/models/standings";
import { getNumDraftSlotsBySeasonId } from "~/models/draft-slot";
export function meta({ data }: Route.MetaArgs): Route.MetaDescriptors {
return [{ title: `${data?.breakdown?.team?.name ?? "Team"} - Brackt` }];
}
/**
* Team score breakdown page
* Shows all drafted participants with their placements and points
* Phase 4.3: Team breakdown pages
*/
export async function loader({ params }: Route.LoaderArgs) {
const { leagueId, seasonId, teamId } = params;
// Get team breakdown with all picks
const [breakdown, standing, numTeams] = await Promise.all([
getTeamScoreBreakdown(teamId, seasonId),
getTeamStanding(teamId, seasonId),
getNumDraftSlotsBySeasonId(seasonId),
]);
if (!breakdown) {
throw new Response("Team not found", { status: 404 });
}
return {
leagueId,
seasonId,
teamId,
breakdown: {
...breakdown,
team: breakdown.team || null,
},
standing,
numTeams,
};
}
export default function TeamBreakdownPage() {
const { leagueId, seasonId, breakdown, standing, numTeams } = useLoaderData<typeof loader>();
return (
<div className="container mx-auto py-8 px-4">
<TeamScoreBreakdown
leagueId={leagueId}
seasonId={seasonId}
breakdown={breakdown}
standing={standing}
numTeams={numTeams}
/>
</div>
);
}