mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 02:42:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { useCallback } from 'react'
 | |
| import {
 | |
|   useStore,
 | |
|   useWorkflowStore,
 | |
| } from '@/app/components/workflow/store'
 | |
| import { useWorkflowConfig } from '@/service/use-workflow'
 | |
| import type { FetchWorkflowDraftResponse } from '@/types/workflow'
 | |
| import { useDataSourceList } from '@/service/use-pipeline'
 | |
| import type { DataSourceItem } from '@/app/components/workflow/block-selector/types'
 | |
| import { basePath } from '@/utils/var'
 | |
| 
 | |
| export const usePipelineConfig = () => {
 | |
|   const pipelineId = useStore(s => s.pipelineId)
 | |
|   const workflowStore = useWorkflowStore()
 | |
| 
 | |
|   const handleUpdateWorkflowConfig = useCallback((config: Record<string, any>) => {
 | |
|     const { setWorkflowConfig } = workflowStore.getState()
 | |
| 
 | |
|     setWorkflowConfig(config)
 | |
|   }, [workflowStore])
 | |
|   useWorkflowConfig(
 | |
|     pipelineId ? `/rag/pipelines/${pipelineId}/workflows/draft/config` : '',
 | |
|     handleUpdateWorkflowConfig,
 | |
|   )
 | |
| 
 | |
|   const handleUpdateNodesDefaultConfigs = useCallback((nodesDefaultConfigs: Record<string, any>) => {
 | |
|     const { setNodesDefaultConfigs } = workflowStore.getState()
 | |
| 
 | |
|     setNodesDefaultConfigs!(nodesDefaultConfigs)
 | |
|   }, [workflowStore])
 | |
|   useWorkflowConfig(
 | |
|     pipelineId ? `/rag/pipelines/${pipelineId}/workflows/default-workflow-block-configs` : '',
 | |
|     handleUpdateNodesDefaultConfigs,
 | |
|   )
 | |
| 
 | |
|   const handleUpdatePublishedAt = useCallback((publishedWorkflow: FetchWorkflowDraftResponse) => {
 | |
|     const { setPublishedAt } = workflowStore.getState()
 | |
| 
 | |
|     setPublishedAt(publishedWorkflow?.created_at)
 | |
|   }, [workflowStore])
 | |
|   useWorkflowConfig(
 | |
|     pipelineId ? `/rag/pipelines/${pipelineId}/workflows/publish` : '',
 | |
|     handleUpdatePublishedAt,
 | |
|   )
 | |
| 
 | |
|   const handleUpdateDataSourceList = useCallback((dataSourceList: DataSourceItem[]) => {
 | |
|     dataSourceList.forEach((item) => {
 | |
|       const icon = item.declaration.identity.icon
 | |
|       if (typeof icon == 'string' && !icon.includes(basePath))
 | |
|         item.declaration.identity.icon = `${basePath}${icon}`
 | |
|     })
 | |
|     const { setDataSourceList } = workflowStore.getState()
 | |
|     setDataSourceList!(dataSourceList)
 | |
|   }, [workflowStore])
 | |
| 
 | |
|   useDataSourceList(!!pipelineId, handleUpdateDataSourceList)
 | |
| }
 | 
