Compare commits

...

2 Commits

Author SHA1 Message Date
78dba97107 Refactor ObjectForm to improve fetch logic and state management
All checks were successful
farmcontrol/farmcontrol-ui/pipeline/head This commit looks good
- 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.
2026-07-26 01:53:39 +01:00
a4346ead98 Fixed warnings. 2026-07-26 01:53:28 +01:00
3 changed files with 21 additions and 7 deletions

View File

@ -28,7 +28,7 @@ const SlicerIntegration = () => {
useEffect(() => {
setPrimaryColorOverride('#00baa8')
}, [])
}, [setPrimaryColorOverride])
const [objectFormState, setEditFormState] = useState({
isEditing: false,

View File

@ -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) {

View File

@ -21,7 +21,10 @@ const TagsInput = ({
const [loading, setLoading] = useState(false)
const [delayedLoading, setDelayedLoading] = useState(true)
const tags = Array.isArray(value) ? value : []
const tags = useMemo(
() => (Array.isArray(value) ? value : []),
[value]
)
useEffect(() => {
let cancelled = false