messages-recv: handle newsletter and unavailable message acks
This commit is contained in:
@@ -36,6 +36,7 @@ import {
|
|||||||
hkdf,
|
hkdf,
|
||||||
MISSING_KEYS_ERROR_TEXT,
|
MISSING_KEYS_ERROR_TEXT,
|
||||||
NACK_REASONS,
|
NACK_REASONS,
|
||||||
|
NO_MESSAGE_FOUND_ERROR_TEXT,
|
||||||
unixTimestampSeconds,
|
unixTimestampSeconds,
|
||||||
xmppPreKey,
|
xmppPreKey,
|
||||||
xmppSignedPreKey
|
xmppSignedPreKey
|
||||||
@@ -1221,8 +1222,11 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => {
|
|||||||
await decrypt()
|
await decrypt()
|
||||||
// message failed to decrypt
|
// message failed to decrypt
|
||||||
if (msg.messageStubType === proto.WebMessageInfo.StubType.CIPHERTEXT && msg.category !== 'peer') {
|
if (msg.messageStubType === proto.WebMessageInfo.StubType.CIPHERTEXT && msg.category !== 'peer') {
|
||||||
if (msg?.messageStubParameters?.[0] === MISSING_KEYS_ERROR_TEXT) {
|
if (
|
||||||
return sendMessageAck(node, NACK_REASONS.ParsingError)
|
msg?.messageStubParameters?.[0] === MISSING_KEYS_ERROR_TEXT ||
|
||||||
|
msg.messageStubParameters?.[0] === NO_MESSAGE_FOUND_ERROR_TEXT
|
||||||
|
) {
|
||||||
|
return sendMessageAck(node)
|
||||||
}
|
}
|
||||||
|
|
||||||
const errorMessage = msg?.messageStubParameters?.[0] || ''
|
const errorMessage = msg?.messageStubParameters?.[0] || ''
|
||||||
@@ -1271,7 +1275,6 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => {
|
|||||||
await sendMessageAck(node, NACK_REASONS.UnhandledError)
|
await sendMessageAck(node, NACK_REASONS.UnhandledError)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
await sendMessageAck(node)
|
|
||||||
const isNewsletter = isJidNewsletter(msg.key.remoteJid!)
|
const isNewsletter = isJidNewsletter(msg.key.remoteJid!)
|
||||||
if (!isNewsletter) {
|
if (!isNewsletter) {
|
||||||
// no type in the receipt => message delivered
|
// no type in the receipt => message delivered
|
||||||
@@ -1297,9 +1300,10 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => {
|
|||||||
const isAnyHistoryMsg = getHistoryMsg(msg.message!)
|
const isAnyHistoryMsg = getHistoryMsg(msg.message!)
|
||||||
if (isAnyHistoryMsg) {
|
if (isAnyHistoryMsg) {
|
||||||
const jid = jidNormalizedUser(msg.key.remoteJid!)
|
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 {
|
} else {
|
||||||
|
await sendMessageAck(node)
|
||||||
logger.debug({ key: msg.key }, 'processed newsletter message without receipts')
|
logger.debug({ key: msg.key }, 'processed newsletter message without receipts')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user