diff --git a/web/app/components/workflow/nodes/start/components/var-list.tsx b/web/app/components/workflow/nodes/start/components/var-list.tsx index a3c307bbd4..3179e02cfd 100644 --- a/web/app/components/workflow/nodes/start/components/var-list.tsx +++ b/web/app/components/workflow/nodes/start/components/var-list.tsx @@ -36,8 +36,7 @@ const VarList: FC = ({ errorMsgKey = 'appDebug.varKeyError.keyAlreadyExists' typeName = 'appDebug.variableConfig.varName' } - - if(hasDuplicateStr(newList.map(item => item.label as string))) { + else if(hasDuplicateStr(newList.map(item => item.label as string))) { errorMsgKey = 'appDebug.varKeyError.keyAlreadyExists' typeName = 'appDebug.variableConfig.labelName' } diff --git a/web/app/components/workflow/nodes/start/panel.tsx b/web/app/components/workflow/nodes/start/panel.tsx index eb04ecb360..0a1efd444f 100644 --- a/web/app/components/workflow/nodes/start/panel.tsx +++ b/web/app/components/workflow/nodes/start/panel.tsx @@ -34,7 +34,8 @@ const Panel: FC> = ({ } = useConfig(id, data) const handleAddVarConfirm = (payload: InputVar) => { - handleAddVariable(payload) + const isValid = handleAddVariable(payload) + if (!isValid) return hideAddVarModal() } diff --git a/web/app/components/workflow/nodes/start/use-config.ts b/web/app/components/workflow/nodes/start/use-config.ts index c0ade614e0..d67b5f790a 100644 --- a/web/app/components/workflow/nodes/start/use-config.ts +++ b/web/app/components/workflow/nodes/start/use-config.ts @@ -11,8 +11,12 @@ import { useWorkflow, } from '@/app/components/workflow/hooks' import useInspectVarsCrud from '../../hooks/use-inspect-vars-crud' +import { hasDuplicateStr } from '@/utils/var' +import Toast from '@/app/components/base/toast' +import { useTranslation } from 'react-i18next' const useConfig = (id: string, payload: StartNodeType) => { + const { t } = useTranslation() const { nodesReadOnly: readOnly } = useNodesReadOnly() const { handleOutVarRenameChange, isVarUsedInNodes, removeUsedVarInNodes } = useWorkflow() const isChatMode = useIsChatMode() @@ -80,7 +84,27 @@ const useConfig = (id: string, payload: StartNodeType) => { const newInputs = produce(inputs, (draft: StartNodeType) => { draft.variables.push(payload) }) + const newList = newInputs.variables + let errorMsgKey = '' + let typeName = '' + if(hasDuplicateStr(newList.map(item => item.variable))) { + errorMsgKey = 'appDebug.varKeyError.keyAlreadyExists' + typeName = 'appDebug.variableConfig.varName' + } + else if(hasDuplicateStr(newList.map(item => item.label as string))) { + errorMsgKey = 'appDebug.varKeyError.keyAlreadyExists' + typeName = 'appDebug.variableConfig.labelName' + } + + if (errorMsgKey) { + Toast.notify({ + type: 'error', + message: t(errorMsgKey, { key: t(typeName) }), + }) + return false + } setInputs(newInputs) + return true }, [inputs, setInputs]) return { readOnly,