diff --git a/web/app/components/workflow/constants.ts b/web/app/components/workflow/constants.ts index aa695d8767..6430adc5eb 100644 --- a/web/app/components/workflow/constants.ts +++ b/web/app/components/workflow/constants.ts @@ -461,7 +461,7 @@ export const FILE_STRUCT: Var[] = [ type: VarType.string, }, { - variable: 'mimetype', + variable: 'mime_type', type: VarType.string, }, { diff --git a/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx b/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx index 5485020f85..e60e34b45f 100644 --- a/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx +++ b/web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx @@ -93,6 +93,8 @@ const ConditionItem = ({ }, [condition, doUpdateCondition]) const handleUpdateConditionValue = useCallback((value: string) => { + if (value === condition.value) + return const newCondition = { ...condition, value, @@ -109,16 +111,28 @@ const ConditionItem = ({ doUpdateCondition(newCondition) }, [condition, doUpdateCondition]) + const isSubVariable = condition.varType === VarType.arrayFile && [ComparisonOperator.contains, ComparisonOperator.notContains].includes(condition.comparison_operator!) + const fileAttr = useMemo(() => { + if (file) + return file + if (isSubVariableKey) { + return { + key: condition.key!, + } + } + return undefined + }, [condition.key, file, isSubVariableKey]) + const isSelect = condition.comparison_operator && [ComparisonOperator.in, ComparisonOperator.notIn, ComparisonOperator.allOf].includes(condition.comparison_operator) const selectOptions = useMemo(() => { if (isSelect) { - if (file?.key === 'type' || condition.comparison_operator === ComparisonOperator.allOf) { + if (fileAttr?.key === 'type' || condition.comparison_operator === ComparisonOperator.allOf) { return FILE_TYPE_OPTIONS.map(item => ({ name: t(`${optionNameI18NPrefix}.${item.i18nKey}`), value: item.value, })) } - if (file?.key === 'transfer_method') { + if (fileAttr?.key === 'transfer_method') { return TRANSFER_METHOD.map(item => ({ name: t(`${optionNameI18NPrefix}.${item.i18nKey}`), value: item.value, @@ -127,9 +141,8 @@ const ConditionItem = ({ return [] } return [] - }, [condition.comparison_operator, file?.key, isSelect, t]) + }, [condition.comparison_operator, fileAttr?.key, isSelect, t]) - const isSubVariable = condition.varType === VarType.arrayFile && [ComparisonOperator.contains, ComparisonOperator.notContains].includes(condition.comparison_operator!) const isNotInput = isSelect || isSubVariable const isSubVarSelect = isSubVariableKey @@ -145,6 +158,8 @@ const ConditionItem = ({ draft.varType = VarType.number else draft.varType = VarType.string + + draft.value = '' draft.comparison_operator = getOperators(undefined, { key })[0] }) @@ -202,7 +217,7 @@ const ConditionItem = ({ varType={condition.varType} value={condition.comparison_operator} onSelect={handleUpdateConditionOperator} - file={isSubVariableKey ? { key: condition.key! } : file} + file={fileAttr} /> { diff --git a/web/app/components/workflow/nodes/if-else/utils.ts b/web/app/components/workflow/nodes/if-else/utils.ts index 53b0811cab..66f361ce90 100644 --- a/web/app/components/workflow/nodes/if-else/utils.ts +++ b/web/app/components/workflow/nodes/if-else/utils.ts @@ -54,7 +54,7 @@ export const getOperators = (type?: VarType, file?: { key: string }) => { ComparisonOperator.contains, ComparisonOperator.notContains, ] - case 'mimetype': + case 'mime_type': return [ ComparisonOperator.contains, ComparisonOperator.notContains,