diff --git a/src/Types/Chat.ts b/src/Types/Chat.ts index a7ff6bb..5801889 100644 --- a/src/Types/Chat.ts +++ b/src/Types/Chat.ts @@ -4,7 +4,7 @@ import type { BufferedEventData } from './Events' import type { LabelActionBody } from './Label' import type { ChatLabelAssociationActionBody } from './LabelAssociation' import type { MessageLabelAssociationActionBody } from './LabelAssociation' -import type { MinimalMessage } from './Message' +import type { MinimalMessage, WAMessageKey } from './Message' /** privacy settings in WhatsApp Web */ export type WAPrivacyValue = 'all' | 'contacts' | 'contact_blacklist' | 'none' @@ -78,7 +78,9 @@ export type ChatModification = mute: number | null } | { - clear: 'all' | { messages: { id: string, fromMe?: boolean, timestamp: number }[] } + clear: boolean + } | { + deleteForMe: { deleteMedia: boolean, key: WAMessageKey, timestamp: number } } | { star: { diff --git a/src/Utils/chat-utils.ts b/src/Utils/chat-utils.ts index 75e15a2..bdcf022 100644 --- a/src/Utils/chat-utils.ts +++ b/src/Utils/chat-utils.ts @@ -553,23 +553,29 @@ export const chatModificationToAppPatch = ( apiVersion: 3, operation: OP.SET } + } else if('deleteForMe' in mod) { + const { timestamp, key, deleteMedia } = mod.deleteForMe + patch = { + syncAction: { + deleteMessageForMeAction: { + deleteMedia, + messageTimestamp: timestamp + } + }, + index: ['deleteMessageForMe', jid, key.id!, key.fromMe ? '1' : '0', '0'], + type: 'regular_high', + apiVersion: 3, + operation: OP.SET + } } else if('clear' in mod) { - if(mod.clear === 'all') { - throw new Boom('not supported') - } else { - const key = mod.clear.messages[0] - patch = { - syncAction: { - deleteMessageForMeAction: { - deleteMedia: false, - messageTimestamp: key.timestamp - } - }, - index: ['deleteMessageForMe', jid, key.id, key.fromMe ? '1' : '0', '0'], - type: 'regular_high', - apiVersion: 3, - operation: OP.SET - } + patch = { + syncAction: { + clearChatAction: {} // add message range later + }, + index: ['clearChat', jid, '1' /*the option here is 0 when keep starred messages is enabled*/, '0'], + type: 'regular_high', + apiVersion: 6, + operation: OP.SET } } else if('pin' in mod) { patch = {