From ec49da073e74c0a48da899cf30aecb9ef3a7b6ec Mon Sep 17 00:00:00 2001 From: Joel Date: Fri, 15 Mar 2024 21:54:16 +0800 Subject: [PATCH] feat: code default value --- .../workflow/nodes/code/use-config.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/web/app/components/workflow/nodes/code/use-config.ts b/web/app/components/workflow/nodes/code/use-config.ts index 7f6768a398..db2ed6fa36 100644 --- a/web/app/components/workflow/nodes/code/use-config.ts +++ b/web/app/components/workflow/nodes/code/use-config.ts @@ -1,20 +1,36 @@ -import { useCallback } from 'react' +import { useCallback, useEffect } from 'react' import produce from 'immer' import useVarList from '../_base/hooks/use-var-list' import useOutputVarList from '../_base/hooks/use-output-var-list' import { VarType } from '../../types' import type { Var } from '../../types' +import { useStore } from '../../store' import type { CodeLanguage, CodeNodeType } from './types' import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud' import useOneStepRun from '@/app/components/workflow/nodes/_base/hooks/use-one-step-run' const useConfig = (id: string, payload: CodeNodeType) => { + const defaultConfig = useStore(s => s.nodesDefaultConfigs)[payload.type] const { inputs, setInputs } = useNodeCrud(id, payload) const { handleVarListChange, handleAddVariable } = useVarList({ inputs, setInputs, }) + useEffect(() => { + if (inputs.code) + return + + const isReady = defaultConfig && Object.keys(defaultConfig).length > 0 + if (isReady) { + setInputs({ + ...inputs, + ...defaultConfig, + }) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [defaultConfig]) + const handleCodeChange = useCallback((code: string) => { const newInputs = produce(inputs, (draft) => { draft.code = code