import { Button, ButtonGroup, Icon } from '@rocket.chat/fuselage'; import { usePermission, useRoute, useRouteParameter, useTranslation } from '@rocket.chat/ui-contexts'; import type { ReactElement } from 'react'; import React, { useEffect, useRef } from 'react'; import UserPageHeaderContentWithSeatsCap from '../../../../ee/client/views/admin/users/UserPageHeaderContentWithSeatsCap'; import { useSeatsCap } from '../../../../ee/client/views/admin/users/useSeatsCap'; import { Contextualbar, ContextualbarHeader, ContextualbarTitle, ContextualbarClose } from '../../../components/Contextualbar'; import Page from '../../../components/Page'; import AddUser from './AddUser'; import AdminUserInfoWithData from './AdminUserInfoWithData'; import EditUserWithData from './EditUserWithData'; import InviteUsers from './InviteUsers'; import UsersTable from './UsersTable'; const UsersPage = (): ReactElement => { const t = useTranslation(); const context = useRouteParameter('context'); const id = useRouteParameter('id'); const seatsCap = useSeatsCap(); const reload = useRef(() => null); const usersRoute = useRoute('admin-users'); const canCreateUser = usePermission('create-user'); const canBulkCreateUser = usePermission('bulk-register-user'); useEffect(() => { if (!context || !seatsCap) { return; } if (seatsCap.activeUsers >= seatsCap.maxActiveUsers && !['edit', 'info'].includes(context)) { usersRoute.push({}); } }, [context, seatsCap, usersRoute]); const handleCloseContextualbar = (): void => { usersRoute.push({}); }; const handleNewUser = (): void => { usersRoute.push({ context: 'new' }); }; const handleInviteUser = (): void => { usersRoute.push({ context: 'invite' }); }; const handleReload = (): void => { seatsCap?.reload(); reload.current(); }; return ( {seatsCap && seatsCap.maxActiveUsers < Number.POSITIVE_INFINITY ? ( ) : ( {canCreateUser && ( )} {canBulkCreateUser && ( )} )} {context && ( {context === 'info' && t('User_Info')} {context === 'edit' && t('Edit_User')} {context === 'new' && t('Add_User')} {context === 'invite' && t('Invite_Users')} {context === 'info' && id && } {context === 'edit' && id && } {context === 'new' && } {context === 'invite' && } )} ); }; export default UsersPage;