diff --git a/web/src/hooks/routeHook.ts b/web/src/hooks/routeHook.ts index f03e4a074a09bd9b49b2b6a4e42ef21e5431edd6..21829fde4911b0c6e881cb6a32ce601b8516d3ec 100644 --- a/web/src/hooks/routeHook.ts +++ b/web/src/hooks/routeHook.ts @@ -1,5 +1,6 @@ import { KnowledgeSearchParams } from '@/constants/knowledge'; -import { useLocation, useSearchParams } from 'umi'; +import { useCallback } from 'react'; +import { useLocation, useNavigate, useSearchParams } from 'umi'; export enum SegmentIndex { Second = '2', @@ -31,3 +32,13 @@ export const useGetKnowledgeSearchParams = () => { currentQueryParameters.get(KnowledgeSearchParams.KnowledgeId) || '', }; }; + +export const useNavigateWithFromState = () => { + const navigate = useNavigate(); + return useCallback( + (path: string) => { + navigate(path, { state: { from: path } }); + }, + [navigate], + ); +}; diff --git a/web/src/layouts/components/header/index.tsx b/web/src/layouts/components/header/index.tsx index bb6da36a6c7a8f4bedca1cbc342195adf493f092..c8f2403f5767317c27982cab4408c7cc3df127aa 100644 --- a/web/src/layouts/components/header/index.tsx +++ b/web/src/layouts/components/header/index.tsx @@ -6,8 +6,9 @@ import Toolbar from '../right-toolbar'; import styles from './index.less'; +import { useNavigateWithFromState } from '@/hooks/routeHook'; import { useCallback, useMemo } from 'react'; -import { useLocation, useNavigate } from 'umi'; +import { useLocation } from 'umi'; const { Header } = Layout; @@ -15,7 +16,7 @@ const RagHeader = () => { const { token: { colorBgContainer }, } = theme.useToken(); - const navigate = useNavigate(); + const navigate = useNavigateWithFromState(); const { pathname } = useLocation(); const tagsData = useMemo( diff --git a/web/src/layouts/components/right-toolbar/index.tsx b/web/src/layouts/components/right-toolbar/index.tsx index 02b5168149014b08686267026add63f61fbd7604..a4cce7403595ec009e9f3ec776c4cf19969d6bcb 100644 --- a/web/src/layouts/components/right-toolbar/index.tsx +++ b/web/src/layouts/components/right-toolbar/index.tsx @@ -11,7 +11,7 @@ const Circle = ({ children }: React.PropsWithChildren) => { }; const handleGithubCLick = () => { - window.open('https://github.com/infiniflow/infinity', 'target'); + window.open('https://github.com/infiniflow/ragflow', 'target'); }; const RightToolBar = () => { diff --git a/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-toolbar/index.tsx b/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-toolbar/index.tsx index 36c07e86a4eb1f0b83a40e08df6bf2c09fa9cd09..fd02a1b1046f3108b4d8f8aa3f45d144fa482c4f 100644 --- a/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-toolbar/index.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-toolbar/index.tsx @@ -80,12 +80,13 @@ const ChunkToolBar = ({ removeChunk(); }, [removeChunk]); - const handleEnabledClick = () => { + const handleEnabledClick = useCallback(() => { switchChunk(1); - }; - const handleDisabledClick = () => { + }, [switchChunk]); + + const handleDisabledClick = useCallback(() => { switchChunk(0); - }; + }, [switchChunk]); const items: MenuProps['items'] = useMemo(() => { return [ @@ -129,7 +130,13 @@ const ChunkToolBar = ({ ), }, ]; - }, [checked, handleSelectAllCheck, handleDelete]); + }, [ + checked, + handleSelectAllCheck, + handleDelete, + handleEnabledClick, + handleDisabledClick, + ]); const content = ( <Menu style={{ width: 200 }} items={items} selectable={false} /> diff --git a/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts b/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts index c52da8d14a9a6632ce1f93d738303ce8a18d1093..23632403346e7901ff544e7afa525da9fcccea32 100644 --- a/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts +++ b/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts @@ -74,7 +74,7 @@ export const useGetPagination = (fetchDocumentList: () => void) => { showQuickJumper: true, total: kFModel.total, showSizeChanger: true, - current: kFModel.pagination.currentPage, + current: kFModel.pagination.current, pageSize: kFModel.pagination.pageSize, pageSizeOptions: [1, 2, 10, 20, 50, 100], onChange: onPageChange, diff --git a/web/src/pages/add-knowledge/components/knowledge-file/model.ts b/web/src/pages/add-knowledge/components/knowledge-file/model.ts index 2c42b01a8070ad0fb634c5683dea53c127b825bc..4405b5bc2ddf653eaaa1cd4866796fac1ad8acfb 100644 --- a/web/src/pages/add-knowledge/components/knowledge-file/model.ts +++ b/web/src/pages/add-knowledge/components/knowledge-file/model.ts @@ -223,5 +223,24 @@ const model: DvaModel<KFModelState> = { return data; }, }, + subscriptions: { + setup({ dispatch, history }) { + history.listen(({ location }) => { + const state: { from: string } = (location.state ?? { + from: '', + }) as { from: string }; + if ( + state.from === '/knowledge' || // TODO: Just directly determine whether the current page is on the knowledge list page. + location.pathname === '/knowledge/dataset/upload' + ) { + dispatch({ + type: 'kFModel/setPagination', + payload: { current: 1, pageSize: 10 }, + }); + } + console.info(location); + }); + }, + }, }; export default model; diff --git a/web/src/pages/add-knowledge/index.tsx b/web/src/pages/add-knowledge/index.tsx index ec4ba5df66b055686ff8892013dff19c2838e7ca..24f370f166913a45941b92c693d34e5f6a149dd1 100644 --- a/web/src/pages/add-knowledge/index.tsx +++ b/web/src/pages/add-knowledge/index.tsx @@ -1,9 +1,13 @@ import { useKnowledgeBaseId } from '@/hooks/knowledgeHook'; -import { useSecondPathName, useThirdPathName } from '@/hooks/routeHook'; +import { + useNavigateWithFromState, + useSecondPathName, + useThirdPathName, +} from '@/hooks/routeHook'; import { Breadcrumb } from 'antd'; import { ItemType } from 'antd/es/breadcrumb/Breadcrumb'; -import { useCallback, useEffect, useMemo } from 'react'; -import { Link, Outlet, useDispatch, useLocation, useNavigate } from 'umi'; +import { useEffect, useMemo } from 'react'; +import { Link, Outlet, useDispatch, useLocation } from 'umi'; import Siderbar from './components/knowledge-sidebar'; import { KnowledgeDatasetRouteKey, @@ -15,7 +19,6 @@ import styles from './index.less'; const KnowledgeAdding = () => { const dispatch = useDispatch(); - const navigate = useNavigate(); const knowledgeBaseId = useKnowledgeBaseId(); const location = useLocation(); @@ -25,14 +28,12 @@ const KnowledgeAdding = () => { const datasetActiveKey: KnowledgeDatasetRouteKey = useThirdPathName() as KnowledgeDatasetRouteKey; - const gotoList = useCallback(() => { - navigate('/knowledge'); - }, [navigate]); + const gotoList = useNavigateWithFromState(); const breadcrumbItems: ItemType[] = useMemo(() => { const items: ItemType[] = [ { - title: <a onClick={gotoList}>Knowledge Base</a>, + title: <a onClick={() => gotoList('/knowledge')}>Knowledge Base</a>, }, { title: datasetActiveKey ? ( diff --git a/web/src/pages/knowledge/knowledge-card/index.tsx b/web/src/pages/knowledge/knowledge-card/index.tsx index 872aadbd289069220d7061437662ec20f5d7ca28..4a6a2f6109c92b2f084e30a58acdc6de8b3ab113 100644 --- a/web/src/pages/knowledge/knowledge-card/index.tsx +++ b/web/src/pages/knowledge/knowledge-card/index.tsx @@ -56,7 +56,9 @@ const KnowledgeCard = ({ item }: IProps) => { }; const handleCardClick = () => { - navigate(`/knowledge/${KnowledgeRouteKey.Dataset}?id=${item.id}`); + navigate(`/knowledge/${KnowledgeRouteKey.Dataset}?id=${item.id}`, { + state: { from: 'list' }, + }); }; return (