diff --git a/src/Signal/libsignal.ts b/src/Signal/libsignal.ts index 86859f3c..02b675ae 100644 --- a/src/Signal/libsignal.ts +++ b/src/Signal/libsignal.ts @@ -5,7 +5,7 @@ import type { LIDMapping, SignalAuthState, SignalKeyStoreWithTransaction } from import type { SignalRepositoryWithLIDStore } from '../Types/Signal' import { generateSignalPubKey } from '../Utils' import type { ILogger } from '../Utils/logger' -import { jidDecode, transferDevice } from '../WABinary' +import { jidDecode, transferDevice, WAJIDDomains } from '../WABinary' import type { SenderKeyStore } from './Group/group_cipher' import { SenderKeyName } from './Group/sender-key-name' import { SenderKeyRecord } from './Group/sender-key-record' @@ -321,7 +321,7 @@ export function makeLibSignalRepository( const jidToSignalProtocolAddress = (jid: string): libsignal.ProtocolAddress => { const decoded = jidDecode(jid)! - const { user, device, server } = decoded + const { user, device, server, domainType } = decoded if (!user) { throw new Error( @@ -329,8 +329,7 @@ const jidToSignalProtocolAddress = (jid: string): libsignal.ProtocolAddress => { ) } - // LID addresses get _1 suffix for Signal protocol - const signalUser = server === 'lid' ? `${user}_1` : user + let signalUser = domainType !== WAJIDDomains.WHATSAPP ? `${user}_${domainType}`: user; const finalDevice = device || 0 return new libsignal.ProtocolAddress(signalUser, finalDevice) diff --git a/src/Socket/messages-recv.ts b/src/Socket/messages-recv.ts index f9417a2a..d014f7ec 100644 --- a/src/Socket/messages-recv.ts +++ b/src/Socket/messages-recv.ts @@ -476,7 +476,9 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { count: retryCount.toString(), id: node.attrs.id!, t: node.attrs.t!, - v: '1' + v: '1', + // ADD ERROR FIELD + error: '0' } }, { diff --git a/src/WABinary/jid-utils.ts b/src/WABinary/jid-utils.ts index 2d2a55a7..b7ab62b2 100644 --- a/src/WABinary/jid-utils.ts +++ b/src/WABinary/jid-utils.ts @@ -49,7 +49,7 @@ export const jidDecode = (jid: string | undefined): FullJid | undefined => { const userCombined = jid!.slice(0, sepIdx) const [userAgent, device] = userCombined.split(':') - const user = userAgent!.split('_')[0]! + const [user, agent] = userAgent!.split('_') let domainType = WAJIDDomains.WHATSAPP if (server === 'lid') { @@ -58,11 +58,13 @@ export const jidDecode = (jid: string | undefined): FullJid | undefined => { domainType = WAJIDDomains.HOSTED } else if (server === 'hosted.lid') { domainType = WAJIDDomains.HOSTED_LID + } else if (agent) { + domainType = parseInt(agent) } return { server: server as JidServer, - user, + user: user!, domainType, device: device ? +device : undefined }