|
import { useCallback } from 'react' |
|
import produce from 'immer' |
|
import useVarList from '../_base/hooks/use-var-list' |
|
import type { Var } from '../../types' |
|
import { VarType } from '../../types' |
|
import type { AnswerNodeType } from './types' |
|
import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud' |
|
import { |
|
useNodesReadOnly, |
|
} from '@/app/components/workflow/hooks' |
|
|
|
const useConfig = (id: string, payload: AnswerNodeType) => { |
|
const { nodesReadOnly: readOnly } = useNodesReadOnly() |
|
const { inputs, setInputs } = useNodeCrud<AnswerNodeType>(id, payload) |
|
|
|
const { handleVarListChange, handleAddVariable } = useVarList<AnswerNodeType>({ |
|
inputs, |
|
setInputs, |
|
}) |
|
|
|
const handleAnswerChange = useCallback((value: string) => { |
|
const newInputs = produce(inputs, (draft) => { |
|
draft.answer = value |
|
}) |
|
setInputs(newInputs) |
|
}, [inputs, setInputs]) |
|
|
|
const filterVar = useCallback((varPayload: Var) => { |
|
return varPayload.type !== VarType.arrayObject |
|
}, []) |
|
return { |
|
readOnly, |
|
inputs, |
|
handleVarListChange, |
|
handleAddVariable, |
|
handleAnswerChange, |
|
filterVar, |
|
} |
|
} |
|
|
|
export default useConfig |
|
|