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;