diff --git a/src/app/(protected)/workorders/_components/wizard/use-new-wo-wizard-state.ts b/src/app/(protected)/workorders/_components/wizard/use-new-wo-wizard-state.ts index 0b98083f..df7c5d32 100644 --- a/src/app/(protected)/workorders/_components/wizard/use-new-wo-wizard-state.ts +++ b/src/app/(protected)/workorders/_components/wizard/use-new-wo-wizard-state.ts @@ -47,7 +47,10 @@ export function useNewWoWizardState({ const [duplicateRow, setDuplicateRow] = useState(null); const [isCheckingDuplicate, setIsCheckingDuplicate] = useState(false); const draftWoNumberRef = useRef(draft.woNumber); - draftWoNumberRef.current = draft.woNumber; + + useEffect(() => { + draftWoNumberRef.current = draft.woNumber; + }, [draft.woNumber]); const { data: apiLocations = [] } = useWorkOrderLocations(); const { data: apiProblems = [] } = useDropdownOptionsByCategory("Problem"); @@ -135,10 +138,15 @@ export function useNewWoWizardState({ }; const handleCreate = () => { + const woNumberAtSubmit = draft.woNumber; void (async () => { setIsCheckingDuplicate(true); try { - const duplicate = await resolveDuplicate(draft.woNumber); + const duplicate = await resolveDuplicate(woNumberAtSubmit); + // Ignore stale lookups if the WO# changed while the request was in flight. + if (woNumberAtSubmit !== draftWoNumberRef.current) { + return; + } if (duplicate) { setDuplicateRow(duplicate); return;