messages-recv: handle newsletter and unavailable message acks
This commit is contained in:
@@ -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')
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user