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

This commit is contained in:
heheer
2024-08-27 13:47:26 +08:00
committed by GitHub
parent f6e2d13e21
commit d3731d221a
2 changed files with 28 additions and 27 deletions

View File

@@ -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
});
}
}}
/>
);

View File

@@ -1,4 +1,4 @@
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'}