apps/meteor/client/views/admin/settings/groups/VoipGroupPage/RemoveAgentButton.tsx
import { IconButton } from '@rocket.chat/fuselage';
import { useMutableCallback } from '@rocket.chat/fuselage-hooks';
import { useSetModal, useToastMessageDispatch, useEndpoint, useTranslation } from '@rocket.chat/ui-contexts';
import React from 'react';
import GenericModal from '../../../../../components/GenericModal';
import { GenericTableCell } from '../../../../../components/GenericTable';
type RemoveAgentButtonProps = { username: string; reload: () => void };
const RemoveAgentButton = ({ username, reload }: RemoveAgentButtonProps) => {
const removeAgent = useEndpoint('DELETE', '/v1/omnichannel/agent/extension/:username', { username });
const setModal = useSetModal();
const dispatchToastMessage = useToastMessageDispatch();
const t = useTranslation();
const handleRemoveClick = useMutableCallback(async () => {
try {
await removeAgent();
} catch (error: unknown) {
dispatchToastMessage({ type: 'error', message: error });
}
reload();
});
const handleDelete = useMutableCallback((e) => {
e.stopPropagation();
const onDeleteAgent = async (): Promise<void> => {
try {
await handleRemoveClick();
dispatchToastMessage({ type: 'success', message: t('Agent_removed') });
} catch (error: unknown) {
dispatchToastMessage({ type: 'error', message: error });
}
setModal();
};
setModal(
<GenericModal
variant='danger'
onConfirm={onDeleteAgent}
onCancel={(): void => setModal()}
onClose={(): void => setModal()}
confirmText={t('Delete')}
/>,
);
});
return (
<GenericTableCell fontScale='p2' color='hint' withTruncatedText>
<IconButton icon='trash' small title={t('Remove_Association')} onClick={handleDelete} />
</GenericTableCell>
);
};
export default RemoveAgentButton;