Files
ragflow/web/src/hooks/logic-hooks/navigate-hooks.ts
TeslaZY 7d3bb3a2f9 Fix dataset card not responding to click events (#9574)
### What problem does this PR solve?

Fix home card not responding to click events

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
- [ ] New Feature (non-breaking change which adds functionality)
- [ ] Documentation Update
- [ ] Refactoring
- [ ] Performance Improvement
- [ ] Other (please describe):
2025-08-20 10:06:14 +08:00

149 lines
3.5 KiB
TypeScript

import { Routes } from '@/routes';
import { useCallback } from 'react';
import { useNavigate, useParams, useSearchParams } from 'umi';
export enum QueryStringMap {
KnowledgeId = 'knowledgeId',
id = 'id',
}
export const useNavigatePage = () => {
const navigate = useNavigate();
const [searchParams] = useSearchParams();
const { id } = useParams();
const navigateToDatasetList = useCallback(() => {
navigate(Routes.Datasets);
}, [navigate]);
const navigateToDataset = useCallback(
(id: string) => () => {
navigate(`${Routes.Dataset}/${id}`);
},
[navigate],
);
const navigateToHome = useCallback(() => {
navigate(Routes.Root);
}, [navigate]);
const navigateToProfile = useCallback(() => {
navigate(Routes.ProfileSetting);
}, [navigate]);
const navigateToOldProfile = useCallback(() => {
navigate(Routes.UserSetting);
}, [navigate]);
const navigateToChatList = useCallback(() => {
navigate(Routes.Chats);
}, [navigate]);
const navigateToChat = useCallback(
(id: string) => () => {
navigate(`${Routes.Chat}/${id}`);
},
[navigate],
);
const navigateToAgents = useCallback(() => {
navigate(Routes.Agents);
}, [navigate]);
const navigateToAgentList = useCallback(() => {
navigate(Routes.AgentList);
}, [navigate]);
const navigateToAgent = useCallback(
(id: string) => () => {
navigate(`${Routes.Agent}/${id}`);
},
[navigate],
);
const navigateToAgentLogs = useCallback(
(id: string) => () => {
navigate(`${Routes.AgentLogPage}/${id}`);
},
[navigate],
);
const navigateToAgentTemplates = useCallback(() => {
navigate(Routes.AgentTemplates);
}, [navigate]);
const navigateToSearchList = useCallback(() => {
navigate(Routes.Searches);
}, [navigate]);
const navigateToSearch = useCallback(
(id: string) => () => {
navigate(`${Routes.Search}/${id}`);
},
[navigate],
);
const navigateToChunkParsedResult = useCallback(
(id: string, knowledgeId?: string) => () => {
navigate(
// `${Routes.ParsedResult}/${id}?${QueryStringMap.KnowledgeId}=${knowledgeId}`,
`${Routes.ParsedResult}/chunks?id=${knowledgeId}&doc_id=${id}`,
);
},
[navigate],
);
const getQueryString = useCallback(
(queryStringKey?: QueryStringMap) => {
const allQueryString = {
[QueryStringMap.KnowledgeId]: searchParams.get(
QueryStringMap.KnowledgeId,
),
[QueryStringMap.id]: searchParams.get(QueryStringMap.id),
};
if (queryStringKey) {
return allQueryString[queryStringKey];
}
return allQueryString;
},
[searchParams],
);
const navigateToChunk = useCallback(
(route: Routes) => {
navigate(
`${route}/${id}?${QueryStringMap.KnowledgeId}=${getQueryString(QueryStringMap.KnowledgeId)}`,
);
},
[getQueryString, id, navigate],
);
const navigateToFiles = useCallback(
(folderId?: string) => {
navigate(`${Routes.Files}?folderId=${folderId}`);
},
[navigate],
);
return {
navigateToDatasetList,
navigateToDataset,
navigateToHome,
navigateToProfile,
navigateToChatList,
navigateToChat,
navigateToChunkParsedResult,
getQueryString,
navigateToChunk,
navigateToAgents,
navigateToAgent,
navigateToAgentLogs,
navigateToAgentTemplates,
navigateToSearchList,
navigateToSearch,
navigateToFiles,
navigateToAgentList,
navigateToOldProfile,
};
};