import { useCallback } from 'react' import { useStore, useWorkflowStore, } from '@/app/components/workflow/store' import { useWorkflowConfig } from '@/service/use-workflow' import type { ToolWithProvider } from '@/app/components/workflow/types' import type { FetchWorkflowDraftResponse } from '@/types/workflow' export const usePipelineConfig = () => { const pipelineId = useStore(s => s.pipelineId) const workflowStore = useWorkflowStore() const handleUpdateWorkflowConfig = useCallback((config: Record) => { const { setWorkflowConfig } = workflowStore.getState() setWorkflowConfig(config) }, [workflowStore]) useWorkflowConfig( pipelineId ? `/rag/pipeline/${pipelineId}/workflows/draft/config` : '', handleUpdateWorkflowConfig, ) const handleUpdateDataSourceList = useCallback((dataSourceList: ToolWithProvider[]) => { const { setDataSourceList } = workflowStore.getState() setDataSourceList!(dataSourceList) }, [workflowStore]) useWorkflowConfig( '/rag/pipelines/datasource-plugins', handleUpdateDataSourceList, ) const handleUpdateNodesDefaultConfigs = useCallback((nodesDefaultConfigs: Record) => { const { setNodesDefaultConfigs } = workflowStore.getState() setNodesDefaultConfigs!(nodesDefaultConfigs) }, [workflowStore]) useWorkflowConfig( pipelineId ? `/rag/pipeline/${pipelineId}/workflows/default-workflow-block-configs` : '', handleUpdateNodesDefaultConfigs, ) const handleUpdatePublishedAt = useCallback((publishedWorkflow: FetchWorkflowDraftResponse) => { const { setPublishedAt } = workflowStore.getState() setPublishedAt(publishedWorkflow?.created_at) }, [workflowStore]) useWorkflowConfig( pipelineId ? `/rag/pipeline/${pipelineId}/workflows/publish` : '', handleUpdatePublishedAt, ) }