import { Tabs, TabsItem } from '@rocket.chat/fuselage'; import { Page, PageHeader, PageContent } from '@rocket.chat/ui-client'; import { useRouter, useRouteParameter, useSetting } from '@rocket.chat/ui-contexts'; import { useEffect, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import ChannelsTab from './tabs/channels/ChannelsTab'; import TeamsTab from './tabs/teams/TeamsTab'; import UsersTab from './tabs/users/UsersTab'; type TabName = 'users' | 'channels' | 'teams' | 'external'; const DirectoryPage = () => { const { t } = useTranslation(); const defaultTab = useSetting('Accounts_Directory_DefaultView', 'users'); const federationEnabled = false; // TODO old federation removed const tab = useRouteParameter('tab') as TabName | undefined; const router = useRouter(); useEffect( () => router.subscribeToRouteChange(() => { if (router.getRouteName() !== 'directory') { return; } const { tab } = router.getRouteParameters(); if (!tab || (tab === 'external' && !federationEnabled)) { router.navigate(`/directory/${defaultTab}`, { replace: true }); } }), [router, federationEnabled, defaultTab], ); const handleTabClick = useCallback((tab: TabName) => () => router.navigate(`/directory/${tab}`), [router]); return ( {t('Channels')} {t('Users')} {t('Teams')} {federationEnabled && ( {t('External_Users')} )} {tab === 'channels' && } {tab === 'users' && } {tab === 'teams' && } {federationEnabled && tab === 'external' && } ); }; export default DirectoryPage;