import { Table } from '@rocket.chat/fuselage'; import { useDebouncedValue } from '@rocket.chat/fuselage-hooks'; import React, { useMemo, useCallback, useState } from 'react'; import GenericTable from '../../../components/GenericTable'; import { useRoute } from '../../../contexts/RouterContext'; import { useTranslation } from '../../../contexts/TranslationContext'; import { useEndpointData } from '../../../hooks/useEndpointData'; import SendTestButton from './SendTestButton'; const useQuery = ({ itemsPerPage, current }, [column, direction]) => useMemo( () => ({ sort: JSON.stringify({ [column]: direction === 'asc' ? 1 : -1 }), ...(itemsPerPage && { count: itemsPerPage }), ...(current && { offset: current }), }), [column, current, direction, itemsPerPage], ); function EmailInboxTable() { const t = useTranslation(); const [params, setParams] = useState({ current: 0, itemsPerPage: 25 }); const [sort] = useState(['name', 'asc']); const debouncedParams = useDebouncedValue(params, 500); const debouncedSort = useDebouncedValue(sort, 500); const query = useQuery(debouncedParams, debouncedSort); const router = useRoute('admin-email-inboxes'); const onClick = useCallback( (_id) => () => router.push({ context: 'edit', _id, }), [router], ); const header = useMemo( () => [ {t('Name')} , {t('Email')} , {t('Active')} , , ].filter(Boolean), [sort, t], ); const { value: data } = useEndpointData('email-inbox.list', query); const renderRow = useCallback( ({ _id, name, email, active }) => ( {name} {email} {active ? t('Yes') : t('No')} ), [onClick, t], ); return ( ); } export default EmailInboxTable;