Navigation.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { useContext, useEffect } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { useParams } from 'react-router';
  4. import { navContext } from '../context/Navigation';
  5. import { ALL_ROUTER_TYPES, NavInfo } from '../router/Types';
  6. export const useNavigationHook = (
  7. type: ALL_ROUTER_TYPES,
  8. extraParam?: {
  9. collectionName: string;
  10. }
  11. ) => {
  12. const { t } = useTranslation('nav');
  13. const { setNavInfo } = useContext(navContext);
  14. const { collectionId = '' } =
  15. useParams<{
  16. collectionId?: string;
  17. }>();
  18. useEffect(() => {
  19. switch (type) {
  20. case ALL_ROUTER_TYPES.OVERVIEW: {
  21. const navInfo: NavInfo = {
  22. navTitle: t('overview'),
  23. backPath: '',
  24. };
  25. setNavInfo(navInfo);
  26. break;
  27. }
  28. case ALL_ROUTER_TYPES.COLLECTIONS: {
  29. const navInfo: NavInfo = {
  30. navTitle: t('collection'),
  31. backPath: '',
  32. };
  33. setNavInfo(navInfo);
  34. break;
  35. }
  36. case ALL_ROUTER_TYPES.COLLECTION_DETAIL: {
  37. const navInfo: NavInfo = {
  38. navTitle: extraParam?.collectionName as string,
  39. backPath: '/collections',
  40. };
  41. setNavInfo(navInfo);
  42. break;
  43. }
  44. case ALL_ROUTER_TYPES.CONSOLE: {
  45. const navInfo: NavInfo = {
  46. navTitle: t('console'),
  47. backPath: '',
  48. };
  49. setNavInfo(navInfo);
  50. break;
  51. }
  52. default:
  53. break;
  54. }
  55. }, [type, extraParam, t, setNavInfo, collectionId]);
  56. };