From ae020e294473c92e34575de3dfaf5b7636f2cc9e Mon Sep 17 00:00:00 2001 From: Theo Macron Date: Wed, 1 Apr 2026 17:50:33 +0200 Subject: [PATCH] front: ensures the edit only applies to the specific occurrence it was made on Signed-off-by: Theo Macron --- .../src/modules/timesStops/TimesStopsOutput.tsx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/front/src/modules/timesStops/TimesStopsOutput.tsx b/front/src/modules/timesStops/TimesStopsOutput.tsx index 1a40fdce3db..1cc4772b107 100644 --- a/front/src/modules/timesStops/TimesStopsOutput.tsx +++ b/front/src/modules/timesStops/TimesStopsOutput.tsx @@ -95,10 +95,13 @@ const TimesStopsOutput = ({ const [pinnedState, setPinnedState] = useState<{ edits: PendingEdit[]; forSchedule: Train['schedule']; + forTrainId: Train['id']; } | null>(null); const optimisticEdits = - pinnedState !== null && pinnedState.forSchedule === selectedTrain.schedule + pinnedState !== null && + pinnedState.forSchedule === selectedTrain.schedule && + pinnedState.forTrainId === selectedTrain.id ? pinnedState.edits : null; @@ -149,7 +152,11 @@ const TimesStopsOutput = ({ const commitEdit = (edits: PendingEdit[], updateFn: () => Promise) => { if (isAwaitingSimulation) return; - setPinnedState({ edits, forSchedule: selectedTrain.schedule }); + setPinnedState({ + edits, + forSchedule: selectedTrain.schedule, + forTrainId: selectedTrain.id, + }); preEditPathItemTimesRef.current = simulatedPathItemTimes; isTrainSimulationPendingRef.current = true; updateFn() @@ -179,7 +186,11 @@ const TimesStopsOutput = ({ arrival: Date | null, propagationMode: PropagationMode ) => { - const singleEdit: PendingEdit = { rowId: row.id, field: 'requestedArrival', value: arrival }; + const singleEdit: PendingEdit = { + rowId: row.id, + field: 'requestedArrival', + value: arrival, + }; commitEdit( buildEditsForUpdate(singleEdit, { row,