UNPKG

@periskope/baileys

Version:

WhatsApp API

63 lines 2.1 kB
import { Boom } from '@hapi/boom'; import { S_WHATSAPP_NET } from '../WABinary/index.js'; import { USyncQuery } from '../WAUSync/index.js'; import { makeSocket } from './socket.js'; export const makeUSyncSocket = (config) => { const sock = makeSocket(config); const { generateMessageTag, query } = sock; const executeUSyncQuery = async (usyncQuery) => { if (usyncQuery.protocols.length === 0) { throw new Boom('USyncQuery must have at least one protocol'); } // todo: validate users, throw WARNING on no valid users // variable below has only validated users const validUsers = usyncQuery.users; const userNodes = validUsers.map(user => { return { tag: 'user', attrs: { jid: !user.phone ? user.id : undefined }, content: usyncQuery.protocols.map(a => a.getUserElement(user)).filter(a => a !== null) }; }); const listNode = { tag: 'list', attrs: {}, content: userNodes }; const queryNode = { tag: 'query', attrs: {}, content: usyncQuery.protocols.map(a => a.getQueryElement()) }; const iq = { tag: 'iq', attrs: { to: S_WHATSAPP_NET, type: 'get', xmlns: 'usync' }, content: [ { tag: 'usync', attrs: { context: usyncQuery.context, mode: usyncQuery.mode, sid: generateMessageTag(), last: 'true', index: '0' }, content: [queryNode, listNode] } ] }; const result = await query(iq); return usyncQuery.parseUSyncQueryResult(result); }; return { ...sock, executeUSyncQuery }; }; //# sourceMappingURL=usync.js.map