From 27f65150d788038ce6fdbd536279600cb4500dea Mon Sep 17 00:00:00 2001 From: Joel Date: Tue, 29 Jul 2025 16:18:15 +0800 Subject: [PATCH] fix: run tool cause page crash because of feature context --- .../components/rag-pipeline/hooks/use-configs-map.ts | 11 +++++++++++ .../components/workflow-app/hooks/use-configs-map.ts | 3 +++ web/app/components/workflow/hooks-store/store.ts | 2 ++ .../_base/components/before-run-form/form-item.tsx | 5 +++-- web/app/components/workflow/panel/inputs-panel.tsx | 4 ++-- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/web/app/components/rag-pipeline/hooks/use-configs-map.ts b/web/app/components/rag-pipeline/hooks/use-configs-map.ts index 537d6f253a..c628cedd7d 100644 --- a/web/app/components/rag-pipeline/hooks/use-configs-map.ts +++ b/web/app/components/rag-pipeline/hooks/use-configs-map.ts @@ -1,13 +1,24 @@ import { useMemo } from 'react' import { useStore } from '@/app/components/workflow/store' import { FlowType } from '@/types/common' +import { Resolution, TransferMethod } from '@/types/app' export const useConfigsMap = () => { const pipelineId = useStore(s => s.pipelineId) + const fileUploadConfig = useStore(s => s.fileUploadConfig) return useMemo(() => { return { flowId: pipelineId!, flowType: FlowType.ragPipeline, + fileSettings: { + image: { + enabled: false, + detail: Resolution.high, + number_limits: 3, + transfer_methods: [TransferMethod.local_file, TransferMethod.remote_url], + }, + fileUploadConfig, + }, } }, [pipelineId]) } diff --git a/web/app/components/workflow-app/hooks/use-configs-map.ts b/web/app/components/workflow-app/hooks/use-configs-map.ts index 6d98b87e91..5d41901924 100644 --- a/web/app/components/workflow-app/hooks/use-configs-map.ts +++ b/web/app/components/workflow-app/hooks/use-configs-map.ts @@ -1,13 +1,16 @@ import { useMemo } from 'react' import { useStore } from '@/app/components/workflow/store' import { FlowType } from '@/types/common' +import { useFeatures } from '@/app/components/base/features/hooks' export const useConfigsMap = () => { const appId = useStore(s => s.appId) + const fileSettings = useFeatures(s => s.features.file) return useMemo(() => { return { flowId: appId!, flowType: FlowType.appFlow, + fileSettings, } }, [appId]) } diff --git a/web/app/components/workflow/hooks-store/store.ts b/web/app/components/workflow/hooks-store/store.ts index 783b42d861..bb77269ed9 100644 --- a/web/app/components/workflow/hooks-store/store.ts +++ b/web/app/components/workflow/hooks-store/store.ts @@ -18,6 +18,7 @@ import type { ValueSelector, } from '@/app/components/workflow/types' import type { FlowType } from '@/types/common' +import type { FileUpload } from '../../base/features/types' export type AvailableNodesMetaData = { nodes: NodeDefault[] @@ -64,6 +65,7 @@ export type CommonHooksFnMap = { configsMap?: { flowId: string flowType: FlowType + fileSettings: FileUpload } } diff --git a/web/app/components/workflow/nodes/_base/components/before-run-form/form-item.tsx b/web/app/components/workflow/nodes/_base/components/before-run-form/form-item.tsx index 430359b845..a38b354683 100644 --- a/web/app/components/workflow/nodes/_base/components/before-run-form/form-item.tsx +++ b/web/app/components/workflow/nodes/_base/components/before-run-form/form-item.tsx @@ -17,7 +17,6 @@ import Textarea from '@/app/components/base/textarea' import TextGenerationImageUploader from '@/app/components/base/image-uploader/text-generation-image-uploader' import { FileUploaderInAttachmentWrapper } from '@/app/components/base/file-uploader' import { Resolution, TransferMethod } from '@/types/app' -import { useFeatures } from '@/app/components/base/features/hooks' import { VarBlockIcon } from '@/app/components/workflow/block-icon' import { Line3 } from '@/app/components/base/icons/src/public/common' import { Variable02 } from '@/app/components/base/icons/src/vender/solid/development' @@ -25,6 +24,7 @@ import { BubbleX } from '@/app/components/base/icons/src/vender/line/others' import { FILE_EXTS } from '@/app/components/base/prompt-editor/constants' import cn from '@/utils/classnames' import type { FileEntity } from '@/app/components/base/file-uploader/types' +import { useHooksStore } from '@/app/components/workflow/hooks-store' type Props = { payload: InputVar @@ -45,7 +45,8 @@ const FormItem: FC = ({ }) => { const { t } = useTranslation() const { type } = payload - const fileSettings = useFeatures(s => s.features.file) + const fileSettings = useHooksStore(s => s.configsMap?.fileSettings) + const handleArrayItemChange = useCallback((index: number) => { return (newValue: any) => { const newValues = produce(value, (draft: any) => { diff --git a/web/app/components/workflow/panel/inputs-panel.tsx b/web/app/components/workflow/panel/inputs-panel.tsx index 64ac6d8686..9690e841ce 100644 --- a/web/app/components/workflow/panel/inputs-panel.tsx +++ b/web/app/components/workflow/panel/inputs-panel.tsx @@ -20,11 +20,11 @@ import { useWorkflowRun } from '../hooks' import type { StartNodeType } from '../nodes/start/types' import { TransferMethod } from '../../base/text-generation/types' import Button from '@/app/components/base/button' -import { useFeatures } from '@/app/components/base/features/hooks' import { getProcessedInputs, } from '@/app/components/base/chat/chat/utils' import { useCheckInputsForms } from '@/app/components/base/chat/chat/check-input-forms-hooks' +import { useHooksStore } from '../hooks-store' type Props = { onRun: () => void @@ -37,7 +37,7 @@ const InputsPanel = ({ onRun }: Props) => { inputs: s.inputs, setInputs: s.setInputs, })) - const fileSettings = useFeatures(s => s.features.file) + const fileSettings = useHooksStore(s => s.configsMap?.fileSettings) const nodes = useNodes() const files = useStore(s => s.files) const workflowRunningData = useStore(s => s.workflowRunningData)