Skip to content

Commit

Permalink
fix: Fixed error for delete messages in groups (#2368) (closes #2300 #…
Browse files Browse the repository at this point in the history
…2319)

---------

Co-authored-by: jorgerafael95 <[email protected]>
  • Loading branch information
icleitoncosta and jorgerafael95 authored Sep 25, 2024
1 parent d49923c commit f490574
Showing 1 changed file with 21 additions and 43 deletions.
64 changes: 21 additions & 43 deletions src/chat/functions/deleteMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,14 @@
import { compare } from 'compare-versions';

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

export interface DeleteMessageReturn {
id: string;
sendMsgResult: Promise<SendMsgResult>;
sendMsgResult: SendMsgResult;
isRevoked: boolean;
isDeleted: boolean;
isSentByMe: boolean;
Expand All @@ -46,23 +47,6 @@ export interface DeleteMessageReturn {
*
* @category Message
*/
export async function deleteMessage(
chatId: string | Wid,
id: string,
deleteMediaInDevice: boolean,
revoke: boolean
): Promise<DeleteMessageReturn>;
/**
* Delete a list of messages
*
* @category Message
*/
export async function deleteMessage(
chatId: string | Wid,
ids: string[],
deleteMediaInDevice: boolean,
revoke: boolean
): Promise<DeleteMessageReturn[]>;
export async function deleteMessage(
chatId: string | Wid,
ids: string | string[],
Expand All @@ -80,24 +64,27 @@ export async function deleteMessage(

const msgs = await getMessageById(ids);

const results: any[] = [];
const results: DeleteMessageReturn[] = [];
for (const msg of msgs) {
let sendMsgResult: SendMsgResult = SendMsgResult.ERROR_UNKNOWN;
let isRevoked = false;
let isDeleted = false;
const isSentByMe = msg.senderObj.isMe;
let imAdmin = false;
if (chat.isGroup) imAdmin = await iAmAdmin(chatId);

const canRevoke = isSentByMe || imAdmin;

if (msg.type === MSG_TYPE.REVOKED && revoke) {
// Message is already revoked
sendMsgResult = SendMsgResult.ERROR_UNKNOWN;
isRevoked = true;
} else if (revoke && isSentByMe) {
} else if (revoke && canRevoke) {
if (msg.type === 'list') {
(msg as any).__x_isUserCreatedType = true;
}

if (compare(self.Debug.VERSION, '2.3000.0', '>=')) {
Cmd.sendRevokeMsgs(
await Cmd.sendRevokeMsgs(
chat,
{
type: 'message',
Expand All @@ -106,19 +93,16 @@ export async function deleteMessage(
{ clearMedia: deleteMediaInDevice }
);
} else {
Cmd.sendRevokeMsgs(chat, [msg], { clearMedia: deleteMediaInDevice });
await Cmd.sendRevokeMsgs(chat, [msg], {
clearMedia: deleteMediaInDevice,
});
}

if (chat.promises.sendRevokeMsgs) {
const result = await chat.promises.sendRevokeMsgs;
if (Array.isArray(result)) {
sendMsgResult = result[0];
}
}
isRevoked = msg.type == 'revoked';
sendMsgResult = SendMsgResult.OK;
isRevoked = true;
} else {
if (compare(self.Debug.VERSION, '2.3000.0', '>=')) {
Cmd.sendDeleteMsgs(
await Cmd.sendDeleteMsgs(
chat,
{
type: 'message',
Expand All @@ -127,16 +111,13 @@ export async function deleteMessage(
deleteMediaInDevice
);
} else {
Cmd.sendDeleteMsgs(chat, [msg], { clearMedia: deleteMediaInDevice });
await Cmd.sendDeleteMsgs(chat, [msg], {
clearMedia: deleteMediaInDevice,
});
}

if (chat.promises.sendDeleteMsgs) {
const result = await chat.promises.sendDeleteMsgs;
if (Array.isArray(result)) {
sendMsgResult = result[0];
}
}
isDeleted = Boolean(chat.msgs.get(msg.id));
sendMsgResult = SendMsgResult.OK;
isDeleted = !chat.msgs.get(msg.id);
}

results.push({
Expand All @@ -148,8 +129,5 @@ export async function deleteMessage(
});
}

if (isSingle) {
return results[0];
}
return results;
return isSingle ? results[0] : results;
}

0 comments on commit f490574

Please sign in to comment.