messages-send, signal: improve hosted device support + patch cache

This commit is contained in:
Rajeh Taher
2025-10-19 23:56:05 +03:00
parent 928fa6ac66
commit 2e47d4b66b
5 changed files with 27 additions and 18 deletions
+1
View File
@@ -1165,6 +1165,7 @@ export const makeChatsSocket = (config: SocketConfig) => {
awaitingSyncTimeout = setTimeout(() => {
if (syncState === SyncState.AwaitingInitialSync) {
// TODO: investigate
logger.warn('Timeout in AwaitingInitialSync, forcing state to Online and flushing buffer')
syncState = SyncState.Online
ev.flush()
+6 -7
View File
@@ -51,6 +51,7 @@ import {
jidDecode,
jidEncode,
jidNormalizedUser,
type JidServer,
type JidWithDevice,
S_WHATSAPP_NET
} from '../WABinary'
@@ -246,7 +247,7 @@ export const makeMessagesSocket = (config: SocketConfig) => {
})
.filter(jid => jid !== null)
let mgetDevices: undefined | Record<string, JidWithDevice[] | undefined>
let mgetDevices: undefined | Record<string, FullJid[] | undefined>
if (useCache && userDevicesCache.mget) {
const usersToFetch = jidsWithUser.map(j => j?.user).filter(Boolean) as string[]
@@ -257,12 +258,11 @@ export const makeMessagesSocket = (config: SocketConfig) => {
if (useCache) {
const devices =
mgetDevices?.[user!] ||
(userDevicesCache.mget ? undefined : ((await userDevicesCache.get(user!)) as JidWithDevice[]))
(userDevicesCache.mget ? undefined : ((await userDevicesCache.get(user!)) as FullJid[]))
if (devices) {
const isLidJid = jid.includes('@lid')
const devicesWithJid = devices.map(d => ({
...d,
jid: isLidJid ? jidEncode(d.user, 'lid', d.device) : jidEncode(d.user, 's.whatsapp.net', d.device)
jid: jidEncode(d.user, d.server, d.device)
}))
deviceResults.push(...devicesWithJid)
@@ -322,10 +322,9 @@ export const makeMessagesSocket = (config: SocketConfig) => {
// Process all devices for this user
for (const item of userDevices) {
const deterministicServer = getServerFromDomainType(item.server, item.domainType)
const finalJid = isLidUser
? jidEncode(user, deterministicServer, item.device)
: jidEncode(item.user, deterministicServer, item.device)
? jidEncode(user, item.server, item.device)
: jidEncode(item.user, item.server, item.device)
deviceResults.push({
...item,