diff --git a/app/components/standings/PointsDisplay.tsx b/app/components/standings/PointsDisplay.tsx
index ee26457..30ae95b 100644
--- a/app/components/standings/PointsDisplay.tsx
+++ b/app/components/standings/PointsDisplay.tsx
@@ -30,7 +30,7 @@ export function PointsDisplay({
{displayed.toFixed(2)}
- {projectedPoints!.toFixed(2)} proj
+ {projectedPoints?.toFixed(2)} proj
);
diff --git a/app/hooks/useSortableData.ts b/app/hooks/useSortableData.ts
index 9f75c3a..8236e6d 100644
--- a/app/hooks/useSortableData.ts
+++ b/app/hooks/useSortableData.ts
@@ -40,10 +40,10 @@ export function useSortableData(
const key = sortConfig.key;
const dir = sortConfig.direction;
- return [...data].sort((a, b) => {
+ return data.toSorted((a, b) => {
// Use custom comparator if provided
if (comparators?.[key]) {
- return comparators[key]!(a, b, dir);
+ return comparators[key]?.(a, b, dir) ?? 0;
}
const aVal = a[key];
diff --git a/app/models/__tests__/upcoming-calendar.test.ts b/app/models/__tests__/upcoming-calendar.test.ts
index 7ed2ef7..76a86f8 100644
--- a/app/models/__tests__/upcoming-calendar.test.ts
+++ b/app/models/__tests__/upcoming-calendar.test.ts
@@ -366,12 +366,12 @@ describe("getUpcomingEventsForDraftedParticipants — bracket sports", () => {
);
expect(result).toHaveLength(2);
- const game1 = result.find((r) => r.id === "e1|1")!;
- const game2 = result.find((r) => r.id === "e1|2")!;
- expect(game1.earliestGameTime).toBe(gameTime1.toISOString());
- expect(game1.matchLabel).toBe("Knockout Stage Game #1");
- expect(game2.earliestGameTime).toBe(gameTime2.toISOString());
- expect(game2.matchLabel).toBe("Knockout Stage Game #2");
+ const game1 = result.find((r) => r.id === "e1|1");
+ const game2 = result.find((r) => r.id === "e1|2");
+ expect(game1?.earliestGameTime).toBe(gameTime1.toISOString());
+ expect(game1?.matchLabel).toBe("Knockout Stage Game #1");
+ expect(game2?.earliestGameTime).toBe(gameTime2.toISOString());
+ expect(game2?.matchLabel).toBe("Knockout Stage Game #2");
});
it("sets matchLabel to round name only (no game number) for single-game matchup", async () => {
diff --git a/app/services/standings-sync/afl.ts b/app/services/standings-sync/afl.ts
index d1290bf..56feb35 100644
--- a/app/services/standings-sync/afl.ts
+++ b/app/services/standings-sync/afl.ts
@@ -51,7 +51,7 @@ export class AflStandingsAdapter implements StandingsSyncAdapter {
// Squiggle already includes `rank` (ladder position), sorted by ladder position.
// Sort ascending by rank so leagueRank matches the AFL ladder order.
- const sorted = [...entries].sort((a, b) => a.rank - b.rank);
+ const sorted = entries.toSorted((a, b) => a.rank - b.rank);
return sorted.map((entry): FetchedStandingsRecord => ({
teamName: entry.name,