import { Pagination } from '@rocket.chat/fuselage'; import { useStableCallback } from '@rocket.chat/fuselage-hooks'; import { GenericTable, GenericTableHeader, GenericTableBody, GenericTableHeaderCell, GenericTableLoadingRow, usePagination, } from '@rocket.chat/ui-client'; import { useTranslation, useEndpoint, useRouter } from '@rocket.chat/ui-contexts'; import { useQuery, hashKey } from '@tanstack/react-query'; import { useMemo, useState } from 'react'; import TriggersRow from './TriggersRow'; import GenericError from '../../../components/GenericError'; import GenericNoResults from '../../../components/GenericNoResults'; import { links } from '../../../lib/links'; const TriggersTable = () => { const t = useTranslation(); const router = useRouter(); const handleAddNew = useStableCallback(() => { router.navigate('/omnichannel/triggers/new'); }); const { current, itemsPerPage, setItemsPerPage, setCurrent, ...paginationProps } = usePagination(); const query = useMemo(() => ({ offset: current, count: itemsPerPage }), [current, itemsPerPage]); const getTriggers = useEndpoint('GET', '/v1/livechat/triggers'); const { data, refetch, isSuccess, isLoading, isError } = useQuery({ queryKey: ['livechat-triggers', query], queryFn: async () => getTriggers(query), }); const [defaultQuery] = useState(hashKey([query])); const queryHasChanged = defaultQuery !== hashKey([query]); const headers = ( <> {t('Name')} {t('Description')} {t('Enabled')} ); return ( <> {isLoading && ( {headers} )} {isSuccess && data.triggers.length === 0 && queryHasChanged && } {isSuccess && data.triggers.length === 0 && !queryHasChanged && ( )} {isSuccess && data.triggers.length > 0 && ( <> {headers} {data.triggers.map(({ _id, name, description, enabled }) => ( ))} )} {isError && } ); }; export default TriggersTable;