12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { useContext, useEffect } from 'react';
- import { useTranslation } from 'react-i18next';
- import { navContext } from '@/context';
- import { ALL_ROUTER_TYPES, NavInfo } from '@/router/Types';
- export const useNavigationHook = (
- type: ALL_ROUTER_TYPES,
- extraParam?: {
- databaseName?: string;
- collectionName?: string;
- title?: string;
- extra?: React.ReactNode;
- }
- ) => {
- const { t: navTrans } = useTranslation('nav');
- const { setNavInfo } = useContext(navContext);
- const {
- databaseName = '',
- collectionName = '',
- extra,
- } = extraParam || {
- collectionName: '',
- databaseName: '',
- };
- useEffect(() => {
- switch (type) {
- case ALL_ROUTER_TYPES.HOME: {
- const navInfo: NavInfo = {
- navTitle: navTrans('welcome'),
- backPath: '',
- showDatabaseSelector: false,
- };
- setNavInfo(navInfo);
- break;
- }
- case ALL_ROUTER_TYPES.DATABASES: {
- const navInfo: NavInfo = {
- navTitle: collectionName,
- backPath: '',
- showDatabaseSelector: true,
- };
- if (collectionName) {
- navInfo.extra = extra;
- }
- setNavInfo(navInfo);
- break;
- }
- case ALL_ROUTER_TYPES.SEARCH: {
- const navInfo: NavInfo = {
- navTitle: navTrans('search'),
- backPath: '',
- showDatabaseSelector: true,
- };
- setNavInfo(navInfo);
- break;
- }
- case ALL_ROUTER_TYPES.SYSTEM: {
- const navInfo: NavInfo = {
- navTitle: navTrans('system'),
- backPath: '',
- showDatabaseSelector: false,
- };
- setNavInfo(navInfo);
- break;
- }
- case ALL_ROUTER_TYPES.USER: {
- const navInfo: NavInfo = {
- navTitle: navTrans('user'),
- backPath: '',
- showDatabaseSelector: true,
- };
- setNavInfo(navInfo);
- break;
- }
- default:
- break;
- }
- }, [type, navTrans, setNavInfo, databaseName, collectionName]);
- };
|