import type { ILivechatTrigger } from '@rocket.chat/core-typings'; import { IconButton } from '@rocket.chat/fuselage'; import { useStableCallback } from '@rocket.chat/fuselage-hooks'; import { GenericModal, GenericTableCell, GenericTableRow } from '@rocket.chat/ui-client'; import { useSetModal, useToastMessageDispatch, useRoute, useTranslation, useEndpoint } from '@rocket.chat/ui-contexts'; import type { KeyboardEvent, MouseEvent } from 'react'; import { memo } from 'react'; export type TriggersRowProps = Pick & { reload: () => void }; const TriggersRow = ({ _id, name, description, enabled, reload }: TriggersRowProps) => { const t = useTranslation(); const setModal = useSetModal(); const triggersRoute = useRoute('omnichannel-triggers'); const deleteTrigger = useEndpoint('DELETE', '/v1/livechat/triggers/:_id', { _id }); const dispatchToastMessage = useToastMessageDispatch(); const handleClick = useStableCallback(() => { triggersRoute.push({ context: 'edit', id: _id, }); }); const handleKeyDown = useStableCallback((e: KeyboardEvent) => { if (!['Enter', 'Space'].includes(e.code)) { return; } handleClick(); }); const handleDelete = useStableCallback((e: MouseEvent) => { e.stopPropagation(); const onDeleteTrigger = async () => { try { await deleteTrigger(); dispatchToastMessage({ type: 'success', message: t('Trigger_removed') }); reload(); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } setModal(); }; setModal( setModal()} confirmText={t('Delete')} />); }); return ( {name} {description} {enabled ? t('Yes') : t('No')} ); }; export default memo(TriggersRow);