messages-send, signal: improve hosted device support + patch cache
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user