From 67a72f9a9296d28f6e40687675c9b0f4beeb403f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Jurmanovi=C4=87?= Date: Sun, 1 Mar 2026 14:33:21 +0100 Subject: [PATCH] fix leaderboard --- src/components/leaderboard/LeaderboardManager.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/leaderboard/LeaderboardManager.tsx b/src/components/leaderboard/LeaderboardManager.tsx index e35fdac..f60cab6 100644 --- a/src/components/leaderboard/LeaderboardManager.tsx +++ b/src/components/leaderboard/LeaderboardManager.tsx @@ -40,13 +40,17 @@ export function LeaderboardManager({ serverId, initialData }: LeaderboardManager const handleDriversChange = (newDrivers: LeaderboardDriver[]) => { const oldDrivers = draft.drivers; - // Build index map: for each position in newDrivers, what was the old index? - const indexMap = newDrivers.map((d) => oldDrivers.indexOf(d)); + // Build index map by matching drivers by initials (their stable identifier) + // For each position in newDrivers, find where that driver was in oldDrivers + const indexMap = newDrivers.map((d) => { + const oldIndex = oldDrivers.findIndex((old) => old.initials === d.initials); + return oldIndex; // -1 if new driver, otherwise the old index + }); - // If a driver was added (indexOf returns -1), it's new + // If a driver was added (findIndex returns -1), it's new, start with DNS const newTracks = draft.tracks.map((t) => ({ ...t, - results: indexMap.map((i) => (i === -1 ? 0 : (t.results[i] ?? 0))) + results: indexMap.map((i) => (i === -1 ? 'DNS' : (t.results[i] ?? 'DNS'))) })); setDraft({ ...draft, drivers: newDrivers, tracks: newTracks });