Skip to content

Commit 9b012ba

Browse files
authored
fix: suppress receipts for newsletter messages to prevent disconnection (#2071)
1 parent e5f820d commit 9b012ba

File tree

1 file changed

+28
-21
lines changed

1 file changed

+28
-21
lines changed

src/Socket/messages-recv.ts

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import {
5151
getBinaryNodeChildren,
5252
getBinaryNodeChildString,
5353
isJidGroup,
54+
isJidNewsletter,
5455
isJidStatusBroadcast,
5556
isLidUser,
5657
isPnUser,
@@ -1250,30 +1251,36 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => {
12501251
await sendMessageAck(node, NACK_REASONS.UnhandledError)
12511252
})
12521253
} else {
1253-
// no type in the receipt => message delivered
1254-
let type: MessageReceiptType = undefined
1255-
let participant = msg.key.participant
1256-
if (category === 'peer') {
1257-
// special peer message
1258-
type = 'peer_msg'
1259-
} else if (msg.key.fromMe) {
1260-
// message was sent by us from a different device
1261-
type = 'sender'
1262-
// need to specially handle this case
1263-
if (isLidUser(msg.key.remoteJid!) || isLidUser(msg.key.remoteJidAlt)) {
1264-
participant = author // TODO: investigate sending receipts to LIDs and not PNs
1254+
await sendMessageAck(node)
1255+
const isNewsletter = isJidNewsletter(msg.key.remoteJid!)
1256+
if (!isNewsletter) {
1257+
// no type in the receipt => message delivered
1258+
let type: MessageReceiptType = undefined
1259+
let participant = msg.key.participant
1260+
if (category === 'peer') {
1261+
// special peer message
1262+
type = 'peer_msg'
1263+
} else if (msg.key.fromMe) {
1264+
// message was sent by us from a different device
1265+
type = 'sender'
1266+
// need to specially handle this case
1267+
if (isLidUser(msg.key.remoteJid!) || isLidUser(msg.key.remoteJidAlt)) {
1268+
participant = author // TODO: investigate sending receipts to LIDs and not PNs
1269+
}
1270+
} else if (!sendActiveReceipts) {
1271+
type = 'inactive'
12651272
}
1266-
} else if (!sendActiveReceipts) {
1267-
type = 'inactive'
1268-
}
12691273

1270-
await sendReceipt(msg.key.remoteJid!, participant!, [msg.key.id!], type)
1274+
await sendReceipt(msg.key.remoteJid!, participant!, [msg.key.id!], type)
12711275

1272-
// send ack for history message
1273-
const isAnyHistoryMsg = getHistoryMsg(msg.message!)
1274-
if (isAnyHistoryMsg) {
1275-
const jid = jidNormalizedUser(msg.key.remoteJid!)
1276-
await sendReceipt(jid, undefined, [msg.key.id!], 'hist_sync')
1276+
// send ack for history message
1277+
const isAnyHistoryMsg = getHistoryMsg(msg.message!)
1278+
if (isAnyHistoryMsg) {
1279+
const jid = jidNormalizedUser(msg.key.remoteJid!)
1280+
await sendReceipt(jid, undefined, [msg.key.id!], 'hist_sync')
1281+
}
1282+
} else {
1283+
logger.debug({ key: msg.key }, 'processed newsletter message without receipts')
12771284
}
12781285
}
12791286

0 commit comments

Comments
 (0)