fix: histsync LID improvements — raw_id mapping, prekeys, keepalive j… (#304)
* fix: histsync LID improvements — raw_id mapping, prekeys, keepalive jitter, CDN DELETE * fix: prekey pool strategy — 800 initial, top-up to 800 when below 200 - INITIAL_PREKEY_COUNT: 812 → 800 (rounded, matches WA Business ~812 from CDP capture) - MIN_PREKEY_COUNT: 25 → 200 (replenishment trigger threshold) - uploadPreKeysToServerIfRequired: top-up to INITIAL_PREKEY_COUNT instead of uploading a flat MIN_PREKEY_COUNT — restores full 800-key pool on each replenish - handleEncryptNotification: same top-up logic (INITIAL_PREKEY_COUNT - count) so server notification path also restores to 800, not just adds 200 uploadPreKeys(5) in error recovery path intentionally left unchanged.
This commit is contained in:
@@ -10,7 +10,7 @@ import {
|
||||
} from './Protocols'
|
||||
import { USyncUser } from './USyncUser'
|
||||
|
||||
export type USyncQueryResultList = { [protocol: string]: unknown; id: string }
|
||||
export type USyncQueryResultList = { [protocol: string]: unknown; id: string; rawId?: number }
|
||||
|
||||
export type USyncQueryResult = {
|
||||
list: USyncQueryResultList[]
|
||||
@@ -68,10 +68,8 @@ export class USyncQuery {
|
||||
//TODO: see if there are any errors in the result node
|
||||
//const resultNode = getBinaryNodeChild(usyncNode, 'result')
|
||||
|
||||
const listNode = usyncNode ? getBinaryNodeChild(usyncNode, 'list') : undefined
|
||||
|
||||
if (listNode?.content && Array.isArray(listNode.content)) {
|
||||
queryResult.list = listNode.content.reduce((acc: USyncQueryResultList[], node) => {
|
||||
const parseNodeList = (content: BinaryNode[]): USyncQueryResultList[] =>
|
||||
content.reduce((acc: USyncQueryResultList[], node) => {
|
||||
const id = node?.attrs.jid
|
||||
if (id) {
|
||||
const data = Array.isArray(node?.content)
|
||||
@@ -89,15 +87,24 @@ export class USyncQuery {
|
||||
.filter(([, b]) => b !== null) as [string, unknown][]
|
||||
)
|
||||
: {}
|
||||
acc.push({ ...data, id })
|
||||
const rawIdAttr = node?.attrs?.['raw_id']
|
||||
const rawId = rawIdAttr !== undefined ? Number(rawIdAttr) : undefined
|
||||
acc.push({ ...data, id, ...(rawId !== undefined && !isNaN(rawId) ? { rawId } : {}) })
|
||||
}
|
||||
|
||||
return acc
|
||||
}, [])
|
||||
|
||||
const listNode = usyncNode ? getBinaryNodeChild(usyncNode, 'list') : undefined
|
||||
if (listNode?.content && Array.isArray(listNode.content)) {
|
||||
queryResult.list = parseNodeList(listNode.content)
|
||||
}
|
||||
|
||||
const sideListNode = usyncNode ? getBinaryNodeChild(usyncNode, 'side_list') : undefined
|
||||
if (sideListNode?.content && Array.isArray(sideListNode.content)) {
|
||||
queryResult.sideList = parseNodeList(sideListNode.content)
|
||||
}
|
||||
|
||||
//TODO: implement side list
|
||||
//const sideListNode = getBinaryNodeChild(usyncNode, 'side_list')
|
||||
return queryResult
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user