From 7a66f8b3d6bf54283d0eb9baaa0d5d24be0f3fb8 Mon Sep 17 00:00:00 2001 From: Renato Alcara Date: Tue, 17 Mar 2026 22:48:05 -0300 Subject: [PATCH] Revert "refactor: flatten participant encryption flow for lint" This reverts commit a790bf616dadb1045dc69771c0bee7499fe94387. --- src/Socket/messages-send.ts | 103 +++++++++++++----------------------- 1 file changed, 38 insertions(+), 65 deletions(-) diff --git a/src/Socket/messages-send.ts b/src/Socket/messages-send.ts index cb2ec727..a53bd937 100644 --- a/src/Socket/messages-send.ts +++ b/src/Socket/messages-send.ts @@ -74,6 +74,8 @@ import { import { USyncQuery, USyncUser } from '../WAUSync' import { makeNewsletterSocket } from './newsletter' +/* eslint-disable max-depth */ + export const makeMessagesSocket = (config: SocketConfig) => { const { logger, @@ -599,57 +601,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { return patchedMessage } - const encryptPatchedMessageForRecipient = async ({ - jid, - patchedMessage, - dsmMessage, - meId, - meLid, - meLidUser, - extraAttrs, - onPkmsg - }: { - jid: string - patchedMessage: proto.IMessage - dsmMessage: proto.IMessage | undefined - meId: string - meLid: string | undefined - meLidUser: string | null | undefined - extraAttrs: BinaryNode['attrs'] | undefined - onPkmsg: () => void - }) => { - if (!jid) return null - - try { - const msgToEncrypt = resolveDsmMessageForRecipient(jid, patchedMessage, dsmMessage, meId, meLid, meLidUser) - const bytes = encodeWAMessage(msgToEncrypt) - const mutexKey = jid - - return await encryptionMutex.mutex(mutexKey, async () => { - const { type, ciphertext } = await signalRepository.encryptMessage({ jid, data: bytes }) - - if (type === 'pkmsg') { - onPkmsg() - } - - return { - tag: 'to', - attrs: { jid }, - content: [ - { - tag: 'enc', - attrs: { v: '2', type, ...(extraAttrs || {}) }, - content: ciphertext - } - ] - } as BinaryNode - }) - } catch (err) { - logger.error({ jid, err }, 'Failed to encrypt for recipient') - return null - } - } - + /* eslint-disable max-depth */ const createParticipantNodes = async ( recipientJids: string[], message: proto.IMessage, @@ -670,22 +622,42 @@ export const makeMessagesSocket = (config: SocketConfig) => { if (!meId) throw new Boom('Not authenticated', { statusCode: 401 }) const meLid = authState.creds.me?.lid const meLidUser = meLid ? (jidDecode(meLid)?.user ?? null) : null - const onPkmsg = () => { - shouldIncludeDeviceIdentity = true - } const encryptionPromises = (patchedMessages as { recipientJid: string; message: proto.IMessage }[]).map( - ({ recipientJid: jid, message: patchedMessage }: { recipientJid: string; message: proto.IMessage }) => - encryptPatchedMessageForRecipient({ - jid, - patchedMessage, - dsmMessage, - meId, - meLid, - meLidUser, - extraAttrs, - onPkmsg - }) + async ({ recipientJid: jid, message: patchedMessage }: { recipientJid: string; message: proto.IMessage }) => { + try { + if (!jid) return null + + const msgToEncrypt = resolveDsmMessageForRecipient(jid, patchedMessage, dsmMessage, meId, meLid, meLidUser) + const bytes = encodeWAMessage(msgToEncrypt) + const mutexKey = jid + + const node = await encryptionMutex.mutex(mutexKey, async () => { + const { type, ciphertext } = await signalRepository.encryptMessage({ jid, data: bytes }) + + if (type === 'pkmsg') { + shouldIncludeDeviceIdentity = true + } + + return { + tag: 'to', + attrs: { jid }, + content: [ + { + tag: 'enc', + attrs: { v: '2', type, ...(extraAttrs || {}) }, + content: ciphertext + } + ] + } + }) + + return node + } catch (err) { + logger.error({ jid, err }, 'Failed to encrypt for recipient') + return null + } + } ) const nodes = (await Promise.all(encryptionPromises)).filter(node => node !== null) as BinaryNode[] @@ -697,6 +669,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { return { nodes, shouldIncludeDeviceIdentity } } + /* eslint-enable max-depth */ // Interactive message detection and binary node injection