diff --git a/app/models/draft-utils.ts b/app/models/draft-utils.ts
index 0dfb4fc..d4ed90b 100644
--- a/app/models/draft-utils.ts
+++ b/app/models/draft-utils.ts
@@ -339,7 +339,7 @@ export function calculatePickInfo(
const teamIndex = isOddRound ? rawPickInRound - 1 : teamCount - rawPickInRound;
const pickInRound = teamIndex + 1; // snake-adjusted, 1-based, matches draftOrder
- return { round, pickInRound, teamIndex };
+ return { round, pickInRound, teamIndex, rawPickInRound };
}
/**
@@ -602,7 +602,7 @@ export async function executeAutoPick(params: {
};
}
- const { round: currentRound, pickInRound } = calculatePickInfo(pickNumber, totalTeams);
+ const { round: currentRound, pickInRound, rawPickInRound } = calculatePickInfo(pickNumber, totalTeams);
// Determine pickedByUserId based on trigger
const pickedByUserId = triggeredBy === "commissioner"
@@ -854,7 +854,7 @@ export async function executeAutoPick(params: {
sportName: participantToPick.sportsSeason.sport.name,
pickNumber,
round: currentRound,
- pickInRound,
+ rawPickInRound,
isDraftComplete,
totalTeams,
draftSlots: draftSlots.map((s) => ({ teamId: s.teamId, draftOrder: s.draftOrder })),
diff --git a/app/routes/api/draft.make-pick.ts b/app/routes/api/draft.make-pick.ts
index f1eb752..d7446ec 100644
--- a/app/routes/api/draft.make-pick.ts
+++ b/app/routes/api/draft.make-pick.ts
@@ -62,7 +62,7 @@ export async function action(args: ActionFunctionArgs) {
});
const totalTeams = draftSlots.length;
- const { round: currentRound, pickInRound } = calculatePickInfo(currentPickNumber, totalTeams);
+ const { round: currentRound, pickInRound, rawPickInRound } = calculatePickInfo(currentPickNumber, totalTeams);
const currentDraftSlot = draftSlots.find((slot) => slot.draftOrder === pickInRound);
if (!currentDraftSlot) {
@@ -339,7 +339,7 @@ export async function action(args: ActionFunctionArgs) {
sportName: participant.sportsSeason.sport.name,
pickNumber: currentPickNumber,
round: currentRound,
- pickInRound,
+ rawPickInRound,
isDraftComplete,
totalTeams,
draftSlots: draftSlots.map((s) => ({ teamId: s.teamId, draftOrder: s.draftOrder })),
diff --git a/app/services/__tests__/draft-discord.server.test.ts b/app/services/__tests__/draft-discord.server.test.ts
index 0dd1280..b0e3a90 100644
--- a/app/services/__tests__/draft-discord.server.test.ts
+++ b/app/services/__tests__/draft-discord.server.test.ts
@@ -41,7 +41,7 @@ const BASE_PARAMS = {
sportName: "Soccer",
pickNumber: 1,
round: 1,
- pickInRound: 1,
+ rawPickInRound: 1,
isDraftComplete: false,
totalTeams: 2,
draftSlots: DRAFT_SLOTS,
@@ -95,6 +95,7 @@ function makeMockDb(overrides: {
beforeEach(() => {
vi.clearAllMocks();
+ vi.mocked(sendPickAnnouncementNotification).mockResolvedValue(undefined);
process.env.APP_URL = "https://test.brackt.com";
});
@@ -230,4 +231,23 @@ describe("notifyPickMadeOnDiscord", () => {
notifyPickMadeOnDiscord({ ...BASE_PARAMS, db: db as never })
).rejects.toThrow("webhook down");
});
+
+ it("uses sequential (not snake-adjusted) pick number in Discord title for even rounds", async () => {
+ // 13-team draft, pick #22: round 2 (even/reversed), rawPickInRound=9, snake-adjusted slot=5
+ // Discord should say "Round 2, Pick 9" not "Round 2, Pick 5"
+ const db = makeMockDb({ season: makeSeason(23) });
+
+ await notifyPickMadeOnDiscord({
+ ...BASE_PARAMS,
+ pickNumber: 22,
+ round: 2,
+ rawPickInRound: 9,
+ totalTeams: 13,
+ db: db as never,
+ });
+
+ expect(sendPickAnnouncementNotification).toHaveBeenCalledWith(
+ expect.objectContaining({ pickNumber: 22, round: 2, pickInRound: 9 })
+ );
+ });
});
diff --git a/app/services/draft-discord.server.ts b/app/services/draft-discord.server.ts
index 80604f5..e46fe1b 100644
--- a/app/services/draft-discord.server.ts
+++ b/app/services/draft-discord.server.ts
@@ -24,7 +24,7 @@ export async function notifyPickMadeOnDiscord(params: {
sportName: string;
pickNumber: number;
round: number;
- pickInRound: number;
+ rawPickInRound: number;
isDraftComplete: boolean;
totalTeams: number;
draftSlots: DraftSlot[];
@@ -38,7 +38,7 @@ export async function notifyPickMadeOnDiscord(params: {
sportName,
pickNumber,
round,
- pickInRound,
+ rawPickInRound,
isDraftComplete,
totalTeams,
draftSlots,
@@ -90,7 +90,7 @@ export async function notifyPickMadeOnDiscord(params: {
draftUrl,
pickNumber,
round,
- pickInRound,
+ pickInRound: rawPickInRound,
pickedTeamName,
participantName,
sportName,