-
Notifications
You must be signed in to change notification settings - Fork 13.5k
Expand file tree
/
Copy pathuseRemoveAgent.tsx
More file actions
37 lines (31 loc) · 1.45 KB
/
useRemoveAgent.tsx
File metadata and controls
37 lines (31 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import type { ILivechatAgent } from '@rocket.chat/core-typings';
import { useEffectEvent } from '@rocket.chat/fuselage-hooks';
import { GenericModal } from '@rocket.chat/ui-client';
import { useSetModal, useToastMessageDispatch, useTranslation, useRouter, useEndpoint } from '@rocket.chat/ui-contexts';
import { useQueryClient } from '@tanstack/react-query';
import { omnichannelQueryKeys } from '../../../../lib/queryKeys';
export const useRemoveAgent = (uid: ILivechatAgent['_id']) => {
const t = useTranslation();
const router = useRouter();
const setModal = useSetModal();
const queryClient = useQueryClient();
const dispatchToastMessage = useToastMessageDispatch();
const deleteAction = useEndpoint('DELETE', '/v1/livechat/users/:type/:_id', { type: 'agent', _id: uid });
const handleDelete = useEffectEvent(() => {
const onDeleteAgent = async () => {
try {
await deleteAction();
dispatchToastMessage({ type: 'success', message: t('Agent_removed') });
router.navigate('/omnichannel/agents');
queryClient.invalidateQueries({ queryKey: omnichannelQueryKeys.agents() });
queryClient.invalidateQueries({ queryKey: omnichannelQueryKeys.agentDepartments(uid) });
} catch (error) {
dispatchToastMessage({ type: 'error', message: error });
} finally {
setModal();
}
};
setModal(<GenericModal variant='danger' onConfirm={onDeleteAgent} onCancel={() => setModal()} confirmText={t('Delete')} />);
});
return handleDelete;
};