import { GenericModal } from '@rocket.chat/ui-client'; import { useEndpoint, useSetModal, useToastMessageDispatch } from '@rocket.chat/ui-contexts'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; const useDeleteMessage = (mid: string, rid: string, onChange: () => void) => { const { t } = useTranslation(); const deleteMessage = useEndpoint('POST', '/v1/chat.delete'); const dismissMessage = useEndpoint('POST', '/v1/moderation.dismissReports'); const dispatchToastMessage = useToastMessageDispatch(); const setModal = useSetModal(); const queryClient = useQueryClient(); const handleDeleteMessages = useMutation({ mutationFn: deleteMessage, onError: (error) => { dispatchToastMessage({ type: 'error', message: error }); setModal(); }, onSuccess: async () => { await handleDismissMessage.mutateAsync({ msgId: mid }); }, }); const handleDismissMessage = useMutation({ mutationFn: dismissMessage, onError: (error) => { dispatchToastMessage({ type: 'error', message: error }); }, onSuccess: () => { dispatchToastMessage({ type: 'success', message: t('Moderation_Message_deleted') }); }, onSettled: () => { onChange(); queryClient.invalidateQueries({ queryKey: ['moderation', 'msgReports'] }); setModal(); }, }); const onDeleteAll = async () => { await handleDeleteMessages.mutateAsync({ msgId: mid, roomId: rid, asUser: true }); }; const confirmDeletMessage = (): void => { setModal( onDeleteAll()} onCancel={() => setModal()} > {t('Moderation_Are_you_sure_you_want_to_delete_this_message')} , ); }; return confirmDeletMessage; }; export default useDeleteMessage;