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.
This commit is contained in:
Tom Butcher 2026-09-04 02:33:15 +01:00
parent 9a601245b6
commit 8b33a82a65

View File

@ -770,17 +770,24 @@ const ObjectForm = forwardRef(
isEditingRef.current = true isEditingRef.current = true
setIsEditing(true) setIsEditing(true)
const computedEntries = calculateComputedValues(objectData, model) // Prefer the fetched snapshot over a stale objectData closure
const nextObjectData = { // (?action=edit can start before fetch finishes).
...applyComputedEntries(objectData, computedEntries), const baseData = serverObjectData.current
_isEditing: true 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) { } catch (err) {
console.error(err) console.error(err)
showError( showError(