import { IconFontFill } from '@/components/icon-font'; import { RAGFlowAvatar } from '@/components/ragflow-avatar'; import { Button } from '@/components/ui/button'; import { useSecondPathName } from '@/hooks/route-hook'; import { useFetchKnowledgeBaseConfiguration, useFetchKnowledgeGraph, } from '@/hooks/use-knowledge-request'; import { cn, formatBytes } from '@/lib/utils'; import { Routes } from '@/routes'; import { formatPureDate } from '@/utils/date'; import { isEmpty } from 'lodash'; import { Banknote, FileSearch2, FolderOpen, Logs } from 'lucide-react'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { useHandleMenuClick } from './hooks'; type PropType = { refreshCount?: number; }; export function SideBar({ refreshCount }: PropType) { const pathName = useSecondPathName(); const { handleMenuClick } = useHandleMenuClick(); // refreshCount: be for avatar img sync update on top left const { data } = useFetchKnowledgeBaseConfiguration({ refreshCount }); const { data: routerData } = useFetchKnowledgeGraph(); const { t } = useTranslation(); const items = useMemo(() => { const list = [ { icon: , label: t(`knowledgeDetails.subbarFiles`), key: Routes.DatasetBase, }, { icon: , label: t(`knowledgeDetails.testing`), key: Routes.DatasetTesting, }, { icon: , label: t(`knowledgeDetails.overview`), key: Routes.DataSetOverview, }, { icon: , label: t(`knowledgeDetails.configuration`), key: Routes.DataSetSetting, }, ]; if (!isEmpty(routerData?.graph)) { list.push({ icon: , label: t(`knowledgeDetails.knowledgeGraph`), key: Routes.KnowledgeGraph, }); } return list; }, [t, routerData]); return ( ); }