diff --git a/src/Socket/messages-send.ts b/src/Socket/messages-send.ts index 09c07a8ac63..7e3f1e63d39 100644 --- a/src/Socket/messages-send.ts +++ b/src/Socket/messages-send.ts @@ -401,7 +401,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { devices.push(...additionalDevices) } - const patched = await patchMessageBeforeSending(message, devices.map(d => jidEncode(d.user, isLid ? 'lid' : 's.whatsapp.net', d.device))) + const patched = await patchMessageBeforeSending(message, devices.map(d => jidEncode(d.user, d.server || (isLid ? 'lid' : 's.whatsapp.net'), d.device))) const bytes = encodeWAMessage(patched) const { ciphertext, senderKeyDistributionMessage } = await signalRepository.encryptGroupMessage( @@ -414,8 +414,8 @@ export const makeMessagesSocket = (config: SocketConfig) => { const senderKeyJids: string[] = [] // ensure a connection is established with every device - for(const { user, device } of devices) { - const jid = jidEncode(user, isLid ? 'lid' : 's.whatsapp.net', device) + for(const { user, device, server: dServer } of devices) { + const jid = jidEncode(user, dServer || (isLid ? 'lid' : 's.whatsapp.net'), device) if(!senderKeyMap[jid] || !!participant) { senderKeyJids.push(jid) // store that this person has had the sender keys sent to them diff --git a/src/Utils/signal.ts b/src/Utils/signal.ts index 87253992804..d0826058ce9 100644 --- a/src/Utils/signal.ts +++ b/src/Utils/signal.ts @@ -123,7 +123,7 @@ export const extractDeviceJids = (result: USyncQueryResultList[], myJid: string, for(const userResult of result) { const { devices, id } = userResult as { devices: ParsedDeviceInfo, id: string } - const { user } = jidDecode(id)! + const { user, server } = jidDecode(id)! const deviceList = devices?.deviceList as DeviceListData[] if(Array.isArray(deviceList)) { for(const { id: device, keyIndex } of deviceList) { @@ -132,7 +132,7 @@ export const extractDeviceJids = (result: USyncQueryResultList[], myJid: string, (myUser !== user || myDevice !== device) && // either different user or if me user, not this device (device === 0 || !!keyIndex) // ensure that "key-index" is specified for "non-zero" devices, produces a bad req otherwise ) { - extracted.push({ user, device }) + extracted.push({ user, device, server }) } } } diff --git a/src/WABinary/jid-utils.ts b/src/WABinary/jid-utils.ts index 9808acb9b97..88be0df214a 100644 --- a/src/WABinary/jid-utils.ts +++ b/src/WABinary/jid-utils.ts @@ -9,6 +9,7 @@ export type JidServer = 'c.us' | 'g.us' | 'broadcast' | 's.whatsapp.net' | 'call export type JidWithDevice = { user: string device?: number + server?: JidServer } export type FullJid = JidWithDevice & {