import type { Dispatch, SetStateAction } from 'react' import React, { useCallback, useMemo } from 'react' import { Trans, useTranslation } from 'react-i18next' import type { OnSelectBlock } from '../types' import Tools from './tools' import { ToolTypeEnum } from './types' import type { ViewType } from './view-type-select' import { RiMoreLine } from '@remixicon/react' import Loading from '@/app/components/base/loading' import Link from 'next/link' import { getMarketplaceUrl } from '@/utils/var' import { useRAGRecommendedPlugins } from '@/service/use-tools' type RAGToolSuggestionsProps = { viewType: ViewType onSelect: OnSelectBlock onTagsChange: Dispatch> } const RAGToolSuggestions: React.FC = ({ viewType, onSelect, onTagsChange, }) => { const { t } = useTranslation() const { data: ragRecommendedPlugins, isFetching: isFetchingRAGRecommendedPlugins, } = useRAGRecommendedPlugins() const recommendedPlugins = useMemo(() => { if (ragRecommendedPlugins) return [...ragRecommendedPlugins.installed_recommended_plugins] return [] }, [ragRecommendedPlugins]) const loadMore = useCallback(() => { onTagsChange((prev) => { if (prev.includes('rag')) return prev return [...prev, 'rag'] }) }, [onTagsChange]) return (
{t('pipeline.ragToolSuggestions.title')}
{isFetchingRAGRecommendedPlugins && (
)} {!isFetchingRAGRecommendedPlugins && recommendedPlugins.length === 0 && (

), }} />

)} {!isFetchingRAGRecommendedPlugins && recommendedPlugins.length > 0 && ( <>
{t('common.operation.more')}
)}
) } export default React.memo(RAGToolSuggestions)