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;