Sfoglia il codice sorgente

fix: output variable name may be duplicate (#5845)

Joel 9 mesi fa
parent
commit
d889e1b233

+ 8 - 2
web/app/components/workflow/nodes/_base/hooks/use-output-var-list.ts

@@ -43,8 +43,14 @@ function useOutputVarList<T>({
       handleOutVarRenameChange(id, [id, outputKeyOrders[changedIndex!]], [id, newKey])
   }, [inputs, setInputs, handleOutVarRenameChange, id, outputKeyOrders, varKey, onOutputKeyOrdersChange])
 
+  const generateNewKey = useCallback(() => {
+    let keyIndex = Object.keys((inputs as any)[varKey]).length + 1
+    while (((inputs as any)[varKey])[`var_${keyIndex}`])
+      keyIndex++
+    return `var_${keyIndex}`
+  }, [inputs, varKey])
   const handleAddVariable = useCallback(() => {
-    const newKey = `var_${Object.keys((inputs as any)[varKey]).length + 1}`
+    const newKey = generateNewKey()
     const newInputs = produce(inputs, (draft: any) => {
       draft[varKey] = {
         ...draft[varKey],
@@ -56,7 +62,7 @@ function useOutputVarList<T>({
     })
     setInputs(newInputs)
     onOutputKeyOrdersChange([...outputKeyOrders, newKey])
-  }, [inputs, setInputs, varKey, outputKeyOrders, onOutputKeyOrdersChange])
+  }, [generateNewKey, inputs, setInputs, onOutputKeyOrdersChange, outputKeyOrders, varKey])
 
   const [isShowRemoveVarConfirm, {
     setTrue: showRemoveVarConfirm,