Spaces:
Paused
Paused
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; | |