import { States, StatesIcon, StatesTitle, StatesActions, StatesAction } from '@rocket.chat/fuselage'; import { useMediaQuery } from '@rocket.chat/fuselage-hooks'; import { GenericModal, GenericTable, GenericTableBody, GenericTableHeader, GenericTableHeaderCell, GenericTableLoadingTable, Page, PageHeader, PageContent, } from '@rocket.chat/ui-client'; import { useSetModal, useToastMessageDispatch, useTranslation, useEndpoint } from '@rocket.chat/ui-contexts'; import { useQuery } from '@tanstack/react-query'; import { useMemo } from 'react'; import InviteRow from './InviteRow'; import GenericNoResults from '../../../components/GenericNoResults'; const InvitesPage = () => { const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); const setModal = useSetModal(); const getInvites = useEndpoint('GET', '/v1/listInvites'); const { data, isLoading, refetch, isSuccess, isError } = useQuery({ queryKey: ['invites'], queryFn: async () => { const invites = await getInvites(); return invites; }, meta: { apiErrorToastMessage: true, }, }); const onRemove = (removeInvite: () => Promise): void => { const confirmRemove = async (): Promise => { try { await removeInvite(); dispatchToastMessage({ type: 'success', message: t('Invite_removed') }); refetch(); } catch (error) { if (typeof error === 'string' || error instanceof Error) { dispatchToastMessage({ type: 'error', message: error }); } } finally { setModal(); } }; setModal( setModal()} onCancel={(): void => setModal()} onConfirm={confirmRemove} > {t('Are_you_sure_you_want_to_delete_this_record')} , ); }; const notSmall = useMediaQuery('(min-width: 768px)'); const headers = useMemo( () => ( <> {t('Token')} {notSmall && ( <> {t('Created_at')} {t('Expiration')} {t('Uses')} {t('Uses_left')} )} ), [notSmall, t], ); return ( <> {isLoading && ( {headers} )} {isSuccess && data && data.length > 0 && ( {headers} {isLoading && } {data.map((invite) => ( ))} )} {isSuccess && data?.length === 0 && } {isError && ( {t('Something_went_wrong')} refetch()}>{t('Reload_page')} )} ); }; export default InvitesPage;