import { useKnowledgeBaseId } from '@/hooks/knowledge-hooks'; import { useNavigateWithFromState, useSecondPathName, useThirdPathName, } from '@/hooks/route-hook'; import { Breadcrumb } from 'antd'; import { ItemType } from 'antd/es/breadcrumb/Breadcrumb'; import { useEffect, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { Link, Outlet, useDispatch, useLocation } from 'umi'; import Siderbar from './components/knowledge-sidebar'; import { KnowledgeDatasetRouteKey, KnowledgeRouteKey } from './constant'; import styles from './index.less'; const KnowledgeAdding = () => { const dispatch = useDispatch(); const knowledgeBaseId = useKnowledgeBaseId(); const { t } = useTranslation(); const location = useLocation(); const activeKey: KnowledgeRouteKey = (useSecondPathName() as KnowledgeRouteKey) || KnowledgeRouteKey.Dataset; const datasetActiveKey: KnowledgeDatasetRouteKey = useThirdPathName() as KnowledgeDatasetRouteKey; const gotoList = useNavigateWithFromState(); const breadcrumbItems: ItemType[] = useMemo(() => { const items: ItemType[] = [ { title: ( <a onClick={() => gotoList('/knowledge')}> {t('header.knowledgeBase')} </a> ), }, { title: datasetActiveKey ? ( <Link to={`/knowledge/${KnowledgeRouteKey.Dataset}?id=${knowledgeBaseId}`} > {t(`knowledgeDetails.${activeKey}`)} </Link> ) : ( t(`knowledgeDetails.${activeKey}`) ), }, ]; if (datasetActiveKey) { items.push({ title: t(`knowledgeDetails.${datasetActiveKey}`), }); } return items; }, [activeKey, datasetActiveKey, gotoList, knowledgeBaseId, t]); useEffect(() => { const search: string = location.search.slice(1); const map = search.split('&').reduce<Record<string, string>>((obj, cur) => { const [key, value] = cur.split('='); obj[key] = value; return obj; }, {}); dispatch({ type: 'kAModel/updateState', payload: { doc_id: undefined, ...map, }, }); }, [location, dispatch]); return ( <> <div className={styles.container}> <Siderbar></Siderbar> <div className={styles.contentWrapper}> <Breadcrumb items={breadcrumbItems} /> <div className={styles.content}> <Outlet></Outlet> </div> </div> </div> </> ); }; export default KnowledgeAdding;