"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.makeBusinessSocket = void 0;var _index = require("../Utils/index.js"); var _business = require("../Utils/business.js"); var _index2 = require("../WABinary/index.js"); var _genericUtils = require("../WABinary/generic-utils.js"); var _messagesRecv = require("./messages-recv.js"); const makeBusinessSocket = (config) => { const sock = (0, _messagesRecv.makeMessagesRecvSocket)(config); const { authState, query, waUploadToServer } = sock; const updateBussinesProfile = async (args) => { const node = []; const simpleFields = ['address', 'email', 'description']; node.push(...simpleFields. filter((key) => args[key]). map((key) => ({ tag: key, attrs: {}, content: args[key] }))); if (args.websites) { node.push(...args.websites.map((website) => ({ tag: 'website', attrs: {}, content: website }))); } if (args.hours) { node.push({ tag: 'business_hours', attrs: { timezone: args.hours.timezone }, content: args.hours.days.map((config) => { const base = { tag: 'business_hours_config', attrs: { day_of_week: config.day, mode: config.mode } }; if (config.mode === 'specific_hours') { return { ...base, attrs: { ...base.attrs, open_time: config.openTimeInMinutes, close_time: config.closeTimeInMinutes } }; } return base; }) }); } const result = await query({ tag: 'iq', attrs: { to: _index2.S_WHATSAPP_NET, type: 'set', xmlns: 'w:biz' }, content: [ { tag: 'business_profile', attrs: { v: '3', mutation_type: 'delta' }, content: node }] }); return result; }; const updateCoverPhoto = async (photo) => { const { fileSha256, filePath } = await (0, _index.getRawMediaUploadData)(photo, 'biz-cover-photo'); const fileSha256B64 = fileSha256.toString('base64'); const { meta_hmac, fbid, ts } = await waUploadToServer(filePath, { fileEncSha256B64: fileSha256B64, mediaType: 'biz-cover-photo' }); await query({ tag: 'iq', attrs: { to: _index2.S_WHATSAPP_NET, type: 'set', xmlns: 'w:biz' }, content: [ { tag: 'business_profile', attrs: { v: '3', mutation_type: 'delta' }, content: [ { tag: 'cover_photo', attrs: { id: String(fbid), op: 'update', token: meta_hmac, ts: String(ts) } }] }] }); return fbid; }; const removeCoverPhoto = async (id) => { return await query({ tag: 'iq', attrs: { to: _index2.S_WHATSAPP_NET, type: 'set', xmlns: 'w:biz' }, content: [ { tag: 'business_profile', attrs: { v: '3', mutation_type: 'delta' }, content: [ { tag: 'cover_photo', attrs: { op: 'delete', id } }] }] }); }; const getCatalog = async ({ jid, limit, cursor }) => { jid = jid || authState.creds.me?.id; jid = (0, _index2.jidNormalizedUser)(jid); const queryParamNodes = [ { tag: 'limit', attrs: {}, content: Buffer.from((limit || 10).toString()) }, { tag: 'width', attrs: {}, content: Buffer.from('100') }, { tag: 'height', attrs: {}, content: Buffer.from('100') }]; if (cursor) { queryParamNodes.push({ tag: 'after', attrs: {}, content: cursor }); } const result = await query({ tag: 'iq', attrs: { to: _index2.S_WHATSAPP_NET, type: 'get', xmlns: 'w:biz:catalog' }, content: [ { tag: 'product_catalog', attrs: { jid, allow_shop_source: 'true' }, content: queryParamNodes }] }); return (0, _business.parseCatalogNode)(result); }; const getCollections = async (jid, limit = 51) => { jid = jid || authState.creds.me?.id; jid = (0, _index2.jidNormalizedUser)(jid); const result = await query({ tag: 'iq', attrs: { to: _index2.S_WHATSAPP_NET, type: 'get', xmlns: 'w:biz:catalog', smax_id: '35' }, content: [ { tag: 'collections', attrs: { biz_jid: jid }, content: [ { tag: 'collection_limit', attrs: {}, content: Buffer.from(limit.toString()) }, { tag: 'item_limit', attrs: {}, content: Buffer.from(limit.toString()) }, { tag: 'width', attrs: {}, content: Buffer.from('100') }, { tag: 'height', attrs: {}, content: Buffer.from('100') }] }] }); return (0, _business.parseCollectionsNode)(result); }; const getOrderDetails = async (orderId, tokenBase64) => { const result = await query({ tag: 'iq', attrs: { to: _index2.S_WHATSAPP_NET, type: 'get', xmlns: 'fb:thrift_iq', smax_id: '5' }, content: [ { tag: 'order', attrs: { op: 'get', id: orderId }, content: [ { tag: 'image_dimensions', attrs: {}, content: [ { tag: 'width', attrs: {}, content: Buffer.from('100') }, { tag: 'height', attrs: {}, content: Buffer.from('100') }] }, { tag: 'token', attrs: {}, content: Buffer.from(tokenBase64) }] }] }); return (0, _business.parseOrderDetailsNode)(result); }; const productUpdate = async (productId, update) => { update = await (0, _business.uploadingNecessaryImagesOfProduct)(update, waUploadToServer); const editNode = (0, _business.toProductNode)(productId, update); const result = await query({ tag: 'iq', attrs: { to: _index2.S_WHATSAPP_NET, type: 'set', xmlns: 'w:biz:catalog' }, content: [ { tag: 'product_catalog_edit', attrs: { v: '1' }, content: [ editNode, { tag: 'width', attrs: {}, content: '100' }, { tag: 'height', attrs: {}, content: '100' }] }] }); const productCatalogEditNode = (0, _genericUtils.getBinaryNodeChild)(result, 'product_catalog_edit'); const productNode = (0, _genericUtils.getBinaryNodeChild)(productCatalogEditNode, 'product'); return (0, _business.parseProductNode)(productNode); }; const productCreate = async (create) => { // ensure isHidden is defined create.isHidden = !!create.isHidden; create = await (0, _business.uploadingNecessaryImagesOfProduct)(create, waUploadToServer); const createNode = (0, _business.toProductNode)(undefined, create); const result = await query({ tag: 'iq', attrs: { to: _index2.S_WHATSAPP_NET, type: 'set', xmlns: 'w:biz:catalog' }, content: [ { tag: 'product_catalog_add', attrs: { v: '1' }, content: [ createNode, { tag: 'width', attrs: {}, content: '100' }, { tag: 'height', attrs: {}, content: '100' }] }] }); const productCatalogAddNode = (0, _genericUtils.getBinaryNodeChild)(result, 'product_catalog_add'); const productNode = (0, _genericUtils.getBinaryNodeChild)(productCatalogAddNode, 'product'); return (0, _business.parseProductNode)(productNode); }; const productDelete = async (productIds) => { const result = await query({ tag: 'iq', attrs: { to: _index2.S_WHATSAPP_NET, type: 'set', xmlns: 'w:biz:catalog' }, content: [ { tag: 'product_catalog_delete', attrs: { v: '1' }, content: productIds.map((id) => ({ tag: 'product', attrs: {}, content: [ { tag: 'id', attrs: {}, content: Buffer.from(id) }] })) }] }); const productCatalogDelNode = (0, _genericUtils.getBinaryNodeChild)(result, 'product_catalog_delete'); return { deleted: +(productCatalogDelNode?.attrs.deleted_count || 0) }; }; return { ...sock, logger: config.logger, getOrderDetails, getCatalog, getCollections, productCreate, productDelete, productUpdate, updateBussinesProfile, updateCoverPhoto, removeCoverPhoto }; };exports.makeBusinessSocket = makeBusinessSocket; /* v9-98524452ffc476bd */