diff --git a/web/app/components/datasets/documents/create-from-pipeline/data-source-options/hooks.tsx b/web/app/components/datasets/documents/create-from-pipeline/data-source-options/hooks.tsx index 7f3a736da8..09a02ce7f4 100644 --- a/web/app/components/datasets/documents/create-from-pipeline/data-source-options/hooks.tsx +++ b/web/app/components/datasets/documents/create-from-pipeline/data-source-options/hooks.tsx @@ -1,31 +1,23 @@ -import { useCallback, useMemo, useState } from 'react' +import { useMemo } from 'react' import type { DataSourceNodeType } from '@/app/components/workflow/nodes/data-source/types' -import type { DataSourceItem } from '@/app/components/workflow/block-selector/types' import { basePath } from '@/utils/var' import { useDataSourceList } from '@/service/use-pipeline' -import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' -import type { ToolWithProvider } from '@/app/components/workflow/types' import { transformDataSourceToTool } from '@/app/components/workflow/block-selector/utils' export const useDatasourceIcon = (data: DataSourceNodeType) => { - const pipelineId = useDatasetDetailContextWithSelector(s => s.dataset?.pipeline_id) - const [dataSourceList, setDataSourceList] = useState([]) + const { data: dataSourceListData, isSuccess } = useDataSourceList(true) - const handleUpdateDataSourceList = useCallback((dataSourceList: DataSourceItem[]) => { + const datasourceIcon = useMemo(() => { + if (!isSuccess) return + const dataSourceList = [...(dataSourceListData || [])] dataSourceList.forEach((item) => { const icon = item.declaration.identity.icon if (typeof icon == 'string' && !icon.includes(basePath)) item.declaration.identity.icon = `${basePath}${icon}` }) const formattedDataSourceList = dataSourceList.map(item => transformDataSourceToTool(item)) - setDataSourceList!(formattedDataSourceList) - }, []) - - useDataSourceList(!!pipelineId, handleUpdateDataSourceList) - - const datasourceIcon = useMemo(() => { - return dataSourceList?.find(toolWithProvider => toolWithProvider.plugin_id === data.plugin_id)?.icon - }, [data, dataSourceList]) + return formattedDataSourceList?.find(toolWithProvider => toolWithProvider.plugin_id === data.plugin_id)?.icon + }, [data.plugin_id, dataSourceListData, isSuccess]) return datasourceIcon } diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/node.tsx b/web/app/components/workflow/nodes/knowledge-retrieval/node.tsx index c24c3e089c..da84baf201 100644 --- a/web/app/components/workflow/nodes/knowledge-retrieval/node.tsx +++ b/web/app/components/workflow/nodes/knowledge-retrieval/node.tsx @@ -1,10 +1,10 @@ import { type FC, useEffect, useState } from 'react' import React from 'react' import type { KnowledgeRetrievalNodeType } from './types' -import { Folder } from '@/app/components/base/icons/src/vender/solid/files' import type { NodeProps } from '@/app/components/workflow/types' import type { DataSet } from '@/models/datasets' import { useDatasetsDetailStore } from '../../datasets-detail-store/store' +import AppIcon from '@/app/components/base/app-icon' const Node: FC> = ({ data, @@ -32,11 +32,16 @@ const Node: FC> = ({ return (
- {selectedDatasets.map(({ id, name }) => ( -
-
- -
+ {selectedDatasets.map(({ id, name, icon_info }) => ( +
+
{name}