From 78dba971073ab8ce32672dcb7ed73c6196b1ac29 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sun, 26 Jul 2026 01:53:39 +0100 Subject: [PATCH] Refactor ObjectForm to improve fetch logic and state management - Removed the initialized state and replaced it with a ref to track fetched objects, enhancing clarity in the fetch condition. - Updated the useEffect hook to streamline the fetch logic, ensuring it only triggers under the correct conditions. - Reset form fields and activities upon fetching a new object, improving user experience during editing. --- .../Dashboard/common/ObjectForm.jsx | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/components/Dashboard/common/ObjectForm.jsx b/src/components/Dashboard/common/ObjectForm.jsx index 3948e3b..ec0d21c 100644 --- a/src/components/Dashboard/common/ObjectForm.jsx +++ b/src/components/Dashboard/common/ObjectForm.jsx @@ -95,7 +95,6 @@ const ObjectForm = forwardRef( const [fetchLoading, setFetchLoading] = useState(true) const [editLoading, setEditLoading] = useState(false) const [activities, setActivities] = useState([]) - const [initialized, setInitialized] = useState(false) const [isEditing, setIsEditing] = useState(false) const isEditingRef = useRef(false) const [formValid, setFormValid] = useState(false) @@ -194,6 +193,7 @@ const ObjectForm = forwardRef( const currentClearObjectActivityRef = useRef(clearObjectActivity) const currentHasFilePropertiesRef = useRef(hasFileProperties) const currentFlushOrphanFilesRef = useRef(flushOrphanFiles) + const fetchedObjectRef = useRef(null) // Update refs when values change useEffect(() => { @@ -488,11 +488,22 @@ const ObjectForm = forwardRef( }, [activities, id, notifyActivityState, handleEditingConflict]) useEffect(() => { - if (connected == true && initialized == false && id && token != null) { - setInitialized(true) - handleFetchObject() + if (connected !== true || !id || token == null) { + return } - }, [id, initialized, handleFetchObject, token, connected]) + + const objectKey = `${type}:${id}` + if (fetchedObjectRef.current === objectKey) { + return + } + + fetchedObjectRef.current = objectKey + setIsEditing(false) + isEditingRef.current = false + setActivities([]) + form.resetFields() + handleFetchObject() + }, [id, type, token, connected, handleFetchObject, form]) useEffect(() => { if (!id) {