From 8b33a82a65781a2f45f689d0ac58e0c9d1d9da37 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Fri, 4 Sep 2026 02:33:15 +0100 Subject: [PATCH] Refactor ObjectForm Component to Use Fetched Data for Editing State - Updated ObjectForm to prefer fetched snapshot data over stale objectData when entering edit mode, ensuring accurate state management. - Enhanced logic to compute next object data based on the latest server data, improving user experience during editing. - Simplified state change handling by integrating base data checks, reducing potential errors during data updates. --- .../Dashboard/common/ObjectForm.jsx | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/components/Dashboard/common/ObjectForm.jsx b/src/components/Dashboard/common/ObjectForm.jsx index 7227d4ef..0b106dda 100644 --- a/src/components/Dashboard/common/ObjectForm.jsx +++ b/src/components/Dashboard/common/ObjectForm.jsx @@ -770,17 +770,24 @@ const ObjectForm = forwardRef( isEditingRef.current = true setIsEditing(true) - const computedEntries = calculateComputedValues(objectData, model) - const nextObjectData = { - ...applyComputedEntries(objectData, computedEntries), - _isEditing: true + // Prefer the fetched snapshot over a stale objectData closure + // (?action=edit can start before fetch finishes). + const baseData = serverObjectData.current + if (baseData) { + const computedEntries = calculateComputedValues(baseData, model) + const nextObjectData = { + ...applyComputedEntries(baseData, computedEntries), + _isEditing: true + } + setObjectData(nextObjectData) + onStateChangeRef.current({ + isEditing: true, + objectData: nextObjectData, + editDisabled: getEditDisabled(model, nextObjectData, userProfile) + }) + } else { + onStateChangeRef.current({ isEditing: true }) } - setObjectData(nextObjectData) - onStateChangeRef.current({ - isEditing: true, - objectData: nextObjectData, - editDisabled: getEditDisabled(model, nextObjectData, userProfile) - }) } catch (err) { console.error(err) showError(