The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/client/lib/chats/flows/requestMessageDeletion.ts

43 lines
1.2 KiB

import type { IMessage } from '@rocket.chat/core-typings';
import { imperativeModal } from '@rocket.chat/ui-client';
import { t } from '../../../../app/utils/lib/i18n';
import DeleteMessageConfirmModal from '../../../views/room/modals/DeleteMessageConfirmModal';
import { dispatchToastMessage } from '../../toast';
import type { ChatAPI } from '../ChatAPI';
export const requestMessageDeletion = async (chat: ChatAPI, message: IMessage): Promise<void> => {
if (!(await chat.data.canDeleteMessage(message))) {
dispatchToastMessage({ type: 'error', message: t('Message_deleting_blocked') });
return;
}
const room = message.drid ? await chat.data.getDiscussionByID(message.drid) : undefined;
await new Promise<void>((resolve, reject) => {
const mid = chat.currentEditingMessage.getMID();
const onCloseModal = async (): Promise<void> => {
imperativeModal.close();
if (mid === message._id) {
chat.currentEditingMessage.stop();
}
chat.composer?.focus();
resolve();
};
imperativeModal.open({
component: DeleteMessageConfirmModal,
props: {
room,
chat,
resolve,
reject,
message,
onCancel: onCloseModal,
},
});
});
};