Commit d3731d22 by heheer Committed by GitHub

fix: change workflow start node output when change file config (#2527)

parent f6e2d13e
......@@ -19,6 +19,8 @@ import VariableEdit from '@/components/core/app/VariableEdit';
import { AppContext } from '@/pages/app/detail/components/context';
import WelcomeTextConfig from '@/components/core/app/WelcomeTextConfig';
import FileSelect from '@/components/core/app/FileSelect';
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
import { userFilesInput } from '@fastgpt/global/core/workflow/template/system/workflowStart';
type ComponentProps = {
chatConfig: AppChatConfigType;
......@@ -215,6 +217,10 @@ function QuestionInputGuide({ chatConfig: { chatInputGuide }, setAppDetail }: Co
}
function FileSelectConfig({ chatConfig: { fileSelectConfig }, setAppDetail }: ComponentProps) {
const onChangeNode = useContextSelector(WorkflowContext, (v) => v.onChangeNode);
const nodes = useContextSelector(WorkflowContext, (v) => v.nodes);
const workflowStartNode = nodes.find((item) => item.type === FlowNodeTypeEnum.workflowStart)!;
return (
<FileSelect
value={fileSelectConfig}
......@@ -226,6 +232,27 @@ function FileSelectConfig({ chatConfig: { fileSelectConfig }, setAppDetail }: Co
fileSelectConfig: e
}
}));
// Dynamic add or delete userFilesInput
const canUploadFiles = e.canSelectFile || e.canSelectImg;
const repeatKey = workflowStartNode?.data.outputs.find(
(item) => item.key === userFilesInput.key
);
if (canUploadFiles) {
!repeatKey &&
onChangeNode({
nodeId: workflowStartNode.id,
type: 'addOutput',
value: userFilesInput
});
} else {
repeatKey &&
onChangeNode({
nodeId: workflowStartNode.id,
type: 'delOutput',
key: userFilesInput.key
});
}
}}
/>
);
......
import React, { useEffect, useMemo } from 'react';
import React from 'react';
import { NodeProps } from 'reactflow';
import NodeCard from './render/NodeCard';
import { FlowNodeItemType } from '@fastgpt/global/core/workflow/type/node.d';
......@@ -17,13 +17,11 @@ import {
} from '@fastgpt/global/core/workflow/node/constant';
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
import { AppContext } from '@/pages/app/detail/components/context';
import { userFilesInput } from '@fastgpt/global/core/workflow/template/system/workflowStart';
const NodeStart = ({ data, selected }: NodeProps<FlowNodeItemType>) => {
const { t } = useTranslation();
const { nodeId, outputs } = data;
const nodeList = useContextSelector(WorkflowContext, (v) => v.nodeList);
const onChangeNode = useContextSelector(WorkflowContext, (v) => v.onChangeNode);
const { appDetail } = useContextSelector(AppContext, (v) => v);
const variablesOutputs = useCreation(() => {
......@@ -56,30 +54,6 @@ const NodeStart = ({ data, selected }: NodeProps<FlowNodeItemType>) => {
});
}, [nodeList, t]);
// Dynamic add or delete userFilesInput
useEffect(() => {
const canUploadFiles =
appDetail.chatConfig?.fileSelectConfig?.canSelectFile ||
appDetail.chatConfig?.fileSelectConfig?.canSelectImg;
const repeatKey = outputs.find((item) => item.key === userFilesInput.key);
if (canUploadFiles) {
!repeatKey &&
onChangeNode({
nodeId,
type: 'addOutput',
value: userFilesInput
});
} else {
repeatKey &&
onChangeNode({
nodeId,
type: 'delOutput',
key: userFilesInput.key
});
}
}, [appDetail.chatConfig?.fileSelectConfig, nodeId, onChangeNode, outputs]);
return (
<NodeCard
minW={'240px'}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment