You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

navigate-hooks.ts 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { Routes } from '@/routes';
  2. import { useCallback } from 'react';
  3. import { useNavigate, useParams, useSearchParams } from 'umi';
  4. export enum QueryStringMap {
  5. KnowledgeId = 'knowledgeId',
  6. }
  7. export const useNavigatePage = () => {
  8. const navigate = useNavigate();
  9. const [searchParams] = useSearchParams();
  10. const { id } = useParams();
  11. const navigateToDatasetList = useCallback(() => {
  12. navigate(Routes.Datasets);
  13. }, [navigate]);
  14. const navigateToDataset = useCallback(
  15. (id: string) => () => {
  16. navigate(`${Routes.Dataset}/${id}`);
  17. },
  18. [navigate],
  19. );
  20. const navigateToHome = useCallback(() => {
  21. navigate(Routes.Home);
  22. }, [navigate]);
  23. const navigateToProfile = useCallback(() => {
  24. navigate(Routes.ProfileSetting);
  25. }, [navigate]);
  26. const navigateToChatList = useCallback(() => {
  27. navigate(Routes.Chats);
  28. }, [navigate]);
  29. const navigateToChat = useCallback(() => {
  30. navigate(Routes.Chat);
  31. }, [navigate]);
  32. const navigateToChunkParsedResult = useCallback(
  33. (id: string, knowledgeId?: string) => () => {
  34. navigate(
  35. `${Routes.ParsedResult}/${id}?${QueryStringMap.KnowledgeId}=${knowledgeId}`,
  36. );
  37. },
  38. [navigate],
  39. );
  40. const getQueryString = useCallback(
  41. (queryStringKey?: QueryStringMap) => {
  42. const allQueryString = {
  43. [QueryStringMap.KnowledgeId]: searchParams.get(
  44. QueryStringMap.KnowledgeId,
  45. ),
  46. };
  47. if (queryStringKey) {
  48. return allQueryString[queryStringKey];
  49. }
  50. return allQueryString;
  51. },
  52. [searchParams],
  53. );
  54. const navigateToChunk = useCallback(
  55. (route: Routes) => {
  56. navigate(
  57. `${route}/${id}?${QueryStringMap.KnowledgeId}=${getQueryString(QueryStringMap.KnowledgeId)}`,
  58. );
  59. },
  60. [getQueryString, id, navigate],
  61. );
  62. return {
  63. navigateToDatasetList,
  64. navigateToDataset,
  65. navigateToHome,
  66. navigateToProfile,
  67. navigateToChatList,
  68. navigateToChat,
  69. navigateToChunkParsedResult,
  70. getQueryString,
  71. navigateToChunk,
  72. };
  73. };