fix: suppress receipts for newsletter messages to prevent disconnection (#2071)
This commit is contained in:
committed by
GitHub
parent
e5f820d119
commit
9b012baa5c
+28
-21
@@ -51,6 +51,7 @@ import {
|
|||||||
getBinaryNodeChildren,
|
getBinaryNodeChildren,
|
||||||
getBinaryNodeChildString,
|
getBinaryNodeChildString,
|
||||||
isJidGroup,
|
isJidGroup,
|
||||||
|
isJidNewsletter,
|
||||||
isJidStatusBroadcast,
|
isJidStatusBroadcast,
|
||||||
isLidUser,
|
isLidUser,
|
||||||
isPnUser,
|
isPnUser,
|
||||||
@@ -1250,30 +1251,36 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => {
|
|||||||
await sendMessageAck(node, NACK_REASONS.UnhandledError)
|
await sendMessageAck(node, NACK_REASONS.UnhandledError)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// no type in the receipt => message delivered
|
await sendMessageAck(node)
|
||||||
let type: MessageReceiptType = undefined
|
const isNewsletter = isJidNewsletter(msg.key.remoteJid!)
|
||||||
let participant = msg.key.participant
|
if (!isNewsletter) {
|
||||||
if (category === 'peer') {
|
// no type in the receipt => message delivered
|
||||||
// special peer message
|
let type: MessageReceiptType = undefined
|
||||||
type = 'peer_msg'
|
let participant = msg.key.participant
|
||||||
} else if (msg.key.fromMe) {
|
if (category === 'peer') {
|
||||||
// message was sent by us from a different device
|
// special peer message
|
||||||
type = 'sender'
|
type = 'peer_msg'
|
||||||
// need to specially handle this case
|
} else if (msg.key.fromMe) {
|
||||||
if (isLidUser(msg.key.remoteJid!) || isLidUser(msg.key.remoteJidAlt)) {
|
// message was sent by us from a different device
|
||||||
participant = author // TODO: investigate sending receipts to LIDs and not PNs
|
type = 'sender'
|
||||||
|
// need to specially handle this case
|
||||||
|
if (isLidUser(msg.key.remoteJid!) || isLidUser(msg.key.remoteJidAlt)) {
|
||||||
|
participant = author // TODO: investigate sending receipts to LIDs and not PNs
|
||||||
|
}
|
||||||
|
} else if (!sendActiveReceipts) {
|
||||||
|
type = 'inactive'
|
||||||
}
|
}
|
||||||
} else if (!sendActiveReceipts) {
|
|
||||||
type = 'inactive'
|
|
||||||
}
|
|
||||||
|
|
||||||
await sendReceipt(msg.key.remoteJid!, participant!, [msg.key.id!], type)
|
await sendReceipt(msg.key.remoteJid!, participant!, [msg.key.id!], type)
|
||||||
|
|
||||||
// send ack for history message
|
// send ack for history message
|
||||||
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')
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.debug({ key: msg.key }, 'processed newsletter message without receipts')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user