diff --git a/src/Socket/messages-recv.ts b/src/Socket/messages-recv.ts index 3a2b3b5c..dbca8e88 100644 --- a/src/Socket/messages-recv.ts +++ b/src/Socket/messages-recv.ts @@ -36,6 +36,7 @@ import { hkdf, MISSING_KEYS_ERROR_TEXT, NACK_REASONS, + NO_MESSAGE_FOUND_ERROR_TEXT, unixTimestampSeconds, xmppPreKey, xmppSignedPreKey @@ -1221,8 +1222,11 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { await decrypt() // message failed to decrypt if (msg.messageStubType === proto.WebMessageInfo.StubType.CIPHERTEXT && msg.category !== 'peer') { - if (msg?.messageStubParameters?.[0] === MISSING_KEYS_ERROR_TEXT) { - return sendMessageAck(node, NACK_REASONS.ParsingError) + if ( + msg?.messageStubParameters?.[0] === MISSING_KEYS_ERROR_TEXT || + msg.messageStubParameters?.[0] === NO_MESSAGE_FOUND_ERROR_TEXT + ) { + return sendMessageAck(node) } const errorMessage = msg?.messageStubParameters?.[0] || '' @@ -1271,7 +1275,6 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { await sendMessageAck(node, NACK_REASONS.UnhandledError) }) } else { - await sendMessageAck(node) const isNewsletter = isJidNewsletter(msg.key.remoteJid!) if (!isNewsletter) { // no type in the receipt => message delivered @@ -1297,9 +1300,10 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { const isAnyHistoryMsg = getHistoryMsg(msg.message!) if (isAnyHistoryMsg) { const jid = jidNormalizedUser(msg.key.remoteJid!) - await sendReceipt(jid, undefined, [msg.key.id!], 'hist_sync') + await sendReceipt(jid, undefined, [msg.key.id!], 'hist_sync') // TODO: investigate } } else { + await sendMessageAck(node) logger.debug({ key: msg.key }, 'processed newsletter message without receipts') } }