Warn when a driver's transponder collides with a different driver
Registering or editing a driver with a transponder already assigned to a different driver (e.g. a wrong-class typo) previously saved silently - the only symptom was that driver's laps never registering during their heat, with no indication why. Now a confirm dialog names the conflicting driver and their class before saving; the same person's own multiple class entries sharing one physical transponder are correctly never flagged. Also confirms two things the user asked to verify: the race clock already counts down for all timed session types (only open practice counts up unbounded), and a driver not entered in a heat already has their laps fully discarded rather than recorded - both were already correct, no changes needed there. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -44,3 +44,19 @@ export function getDriverProfileReferences(state, reference) {
|
||||
profile.driverIds.forEach((driverId) => references.add(driverId));
|
||||
return references;
|
||||
}
|
||||
|
||||
// A transponder is one physical chip, so the same value legitimately repeats across a
|
||||
// single person's own multi-class driver entries (same profile) - that is not a
|
||||
// conflict. It only means something went wrong when it also shows up on a driver
|
||||
// belonging to a DIFFERENT profile, since two different people can't share one chip:
|
||||
// most often a typo at registration that quietly grabbed someone else's transponder.
|
||||
export function findTransponderConflict(drivers, { transponder, profileId, excludeDriverId } = {}) {
|
||||
const value = String(transponder || "").trim();
|
||||
if (!value) return null;
|
||||
const list = Array.isArray(drivers) ? drivers : [];
|
||||
return list.find((driver) => (
|
||||
String(driver.id || "") !== String(excludeDriverId || "")
|
||||
&& String(driver.transponder || "").trim() === value
|
||||
&& getDriverProfileId(driver) !== String(profileId || "")
|
||||
)) || null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user