dify/web/app/components/workflow/hooks/use-tool-icon.ts

39 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-05-14 11:14:16 +08:00
import {
useMemo,
} from 'react'
import type {
Node,
} from '../types'
import {
BlockEnum,
} from '../types'
import {
useStore,
} from '../store'
import { CollectionType } from '@/app/components/tools/types'
import { canFindTool } from '@/utils'
export const useToolIcon = (data: Node['data']) => {
const buildInTools = useStore(s => s.buildInTools)
const customTools = useStore(s => s.customTools)
const workflowTools = useStore(s => s.workflowTools)
2025-05-23 14:25:38 +08:00
const dataSourceList = useStore(s => s.dataSourceList)
2025-05-23 11:50:36 +08:00
// const a = useStore(s => s.data)
2025-05-14 11:14:16 +08:00
const toolIcon = useMemo(() => {
if (data.type === BlockEnum.Tool) {
let targetTools = buildInTools
if (data.provider_type === CollectionType.builtIn)
targetTools = buildInTools
else if (data.provider_type === CollectionType.custom)
targetTools = customTools
else
targetTools = workflowTools
return targetTools.find(toolWithProvider => canFindTool(toolWithProvider.id, data.provider_id))?.icon
}
2025-05-23 11:50:36 +08:00
if (data.type === BlockEnum.DataSource)
2025-05-23 14:25:38 +08:00
return dataSourceList?.find(toolWithProvider => canFindTool(toolWithProvider.id, data.provider_id))?.icon
2025-05-23 11:50:36 +08:00
}, [data, buildInTools, customTools, workflowTools, dataSourceList])
2025-05-14 11:14:16 +08:00
return toolIcon
}