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, }; };