messages-recv: handle newsletter and unavailable message acks

This commit is contained in:
Rajeh Taher
2025-11-21 17:32:59 +02:00
parent 23f1268918
commit f46e8b118c
+8 -4
View File
@@ -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')
}
}