import { useCallback } from 'react' import produce from 'immer' import type { WorkflowFinishedResponse } from '@/types/workflow' import { useWorkflowStore } from '@/app/components/workflow/store' import { getFilesInLogs } from '@/app/components/base/file-uploader/utils' export const useWorkflowFinished = () => { const workflowStore = useWorkflowStore() const handleWorkflowFinished = useCallback((params: WorkflowFinishedResponse) => { const { data } = params const { workflowRunningData, setWorkflowRunningData, } = workflowStore.getState() const isStringOutput = data.outputs && Object.keys(data.outputs).length === 1 && typeof data.outputs[Object.keys(data.outputs)[0]] === 'string' setWorkflowRunningData(produce(workflowRunningData!, (draft) => { draft.result = { ...draft.result, ...data, files: getFilesInLogs(data.outputs), } as any if (isStringOutput) { draft.resultTabActive = true draft.resultText = data.outputs[Object.keys(data.outputs)[0]] } })) }, [workflowStore]) return { handleWorkflowFinished, } }