import { Pagination, States, StatesAction, StatesActions, StatesIcon, StatesTitle } from '@rocket.chat/fuselage'; import { GenericTable, GenericTableBody, GenericTableCell, GenericTableHeader, GenericTableHeaderCell, GenericTableLoadingTable, GenericTableRow, usePagination, useSort, } from '@rocket.chat/ui-client'; import { useRoute, useTranslation, useEndpoint } from '@rocket.chat/ui-contexts'; import { useQuery } from '@tanstack/react-query'; import { useMemo, useCallback } from 'react'; import SendTestButton from './SendTestButton'; import GenericNoResults from '../../../components/GenericNoResults'; const EmailInboxTable = () => { const t = useTranslation(); const router = useRoute('admin-email-inboxes'); const { current, itemsPerPage, setItemsPerPage: onSetItemsPerPage, setCurrent: onSetCurrent, ...paginationProps } = usePagination(); const { sortBy, sortDirection, setSort } = useSort<'name' | 'email' | 'active'>('name'); const onClick = useCallback( (_id: string) => (): void => { router.push({ context: 'edit', _id, }); }, [router], ); const endpoint = useEndpoint('GET', '/v1/email-inbox.list'); const query = { sort: JSON.stringify({ [sortBy]: sortDirection === 'asc' ? 1 : -1 }), ...(itemsPerPage && { count: itemsPerPage }), ...(current && { offset: current }), }; const result = useQuery({ queryKey: ['email-list', query], queryFn: () => endpoint(query), }); const headers = useMemo( () => [ {t('Name')} , {t('Email')} , {t('Active')} , {t('Action')}, ], [setSort, sortBy, sortDirection, t], ); return ( <> {result.isPending && ( {headers} )} {result.isSuccess && result.data.emailInboxes.length > 0 && ( <> {headers} {result.data.emailInboxes.map((emailInbox) => ( {emailInbox.name} {emailInbox.email} {emailInbox.active ? t('Yes') : t('No')} ))} )} {result.isSuccess && result.data.emailInboxes.length === 0 && } {result.isError && ( {t('Something_went_wrong')} result.refetch()}>{t('Reload_page')} )} ); }; export default EmailInboxTable;