Skip to content

Commit

Permalink
fix: WPP.chat.deleteMessage function
Browse files Browse the repository at this point in the history
  • Loading branch information
edgardmessias committed May 31, 2022
1 parent eff2879 commit 88ac040
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 21 deletions.
46 changes: 27 additions & 19 deletions src/chat/functions/deleteMessage.ts
Expand Up @@ -15,7 +15,7 @@
*/

import { assertGetChat } from '../../assert';
import { Wid } from '../../whatsapp';
import { Cmd, Wid } from '../../whatsapp';
import { MSG_TYPE, SendMsgResult } from '../../whatsapp/enums';
import { getMessageById } from '.';

Expand All @@ -24,11 +24,24 @@ export interface DeleteMessageReturn {
sendMsgResult: Promise<SendMsgResult>;
isRevoked: boolean;
isDeleted: boolean;
isSentByMe: boolean;
}

/**
* Delete a message
*
* @example
* ```javascript
* // Delete a message
* WPP.chat.deleteMessage('[number]@callback.us', 'msgid');
* // Delete a list of messages
* WPP.chat.deleteMessage('[number]@callback.us', ['msgid1', 'msgid2]);
* // Delete a message and delete media
* WPP.chat.deleteMessage('[number]@callback.us', 'msgid', true);
* // Revoke a message
* WPP.chat.deleteMessage('[number]@callback.us', 'msgid', true, true);
* ```
*
* @category Message
*/
export async function deleteMessage(
Expand Down Expand Up @@ -70,39 +83,34 @@ export async function deleteMessage(
let sendMsgResult: SendMsgResult = SendMsgResult.ERROR_UNKNOWN;
let isRevoked = false;
let isDeleted = false;
const isSentByMe = msg.isSentByMe;

if (msg.type === MSG_TYPE.REVOKED) {
if (msg.type === MSG_TYPE.REVOKED && revoke) {
// Message is already revoked
sendMsgResult = SendMsgResult.ERROR_UNKNOWN;
isRevoked = true;
} else if (revoke) {
if (typeof chat.canSenderRevoke === 'function') {
sendMsgResult = await chat.sendRevokeMsgs([msg], deleteMediaInDevice);
if (sendMsgResult === SendMsgResult.OK) {
isRevoked = true;
}
} else {
sendMsgResult = await chat.sendRevokeMsgs(
[msg],
'Sender',
deleteMediaInDevice
);
if (sendMsgResult === SendMsgResult.OK) {
isRevoked = true;
}
Cmd.sendRevokeMsgs(chat, [msg], { clearMedia: deleteMediaInDevice });

if (chat.promises.sendRevokeMsgs) {
await chat.promises.sendRevokeMsgs;
}
isRevoked = msg.isRevokedByMe;
} else {
sendMsgResult = await chat.sendDeleteMsgs([msg], deleteMediaInDevice);
if (sendMsgResult === SendMsgResult.OK) {
isDeleted = true;
Cmd.sendDeleteMsgs(chat, [msg], deleteMediaInDevice);

if (chat.promises.sendDeleteMsgs) {
await chat.promises.sendDeleteMsgs;
}
isDeleted = Boolean(chat.msgs.get(msg.id));
}

results.push({
id: msg.id.toString(),
sendMsgResult,
isRevoked,
isDeleted,
isSentByMe,
});
}

Expand Down
17 changes: 15 additions & 2 deletions src/whatsapp/misc/Cmd.ts
Expand Up @@ -16,6 +16,7 @@

import { ChatModel } from '..';
import { exportModule } from '../exportModule';
import { MsgModel } from '../models';
import { EventEmitter } from '.';

/** @whatsapp 88102
Expand Down Expand Up @@ -53,8 +54,20 @@ export declare class CmdClass extends EventEmitter {
ephemeralDrawer(e?: any, t?: any): void;
sendStarMsgs(e?: any, t?: any, r?: any, n?: any): void;
sendUnstarMsgs(e?: any, t?: any, r?: any, n?: any): void;
sendDeleteMsgs(e?: any, t?: any, r?: any, n?: any, i?: any): void;
sendRevokeMsgs(e?: any, t?: any, r?: any, n?: any, i?: any): void;
sendDeleteMsgs(
chat: ChatModel,
msgs: MsgModel[],
clearMedia?: boolean,
toastPosition?: any
): void;
sendRevokeMsgs(
chat: ChatModel,
msgs: MsgModel[],
options?: {
clearMedia?: boolean;
toastPosition?: any;
}
): void;
_openChat(e?: any, t?: any): void;
openChatAt(
chat: ChatModel,
Expand Down
1 change: 1 addition & 0 deletions src/whatsapp/models/MsgModel.ts
Expand Up @@ -306,6 +306,7 @@ interface Derived {
};
isGroupsV4InviteExpired: boolean;
isPersistent: boolean;
isRevokedByMe: boolean;
isUnreadType: boolean;
isUserCreatedType: boolean;
supportsMessageFooter?: any;
Expand Down

0 comments on commit 88ac040

Please sign in to comment.