mukulhase / WebWhatsapp-Wrapper

An API for sending and receiving messages over web.whatsapp [Working as of 18th May 2018]
https://webwhatsapi.readthedocs.io/en/latest/
MIT License
2.02k stars 796 forks source link

Uncaught ReferenceError: webpackChunkwhatsapp_web_client is not defined #1191

Open mohdsaeed7849 opened 3 months ago

mohdsaeed7849 commented 3 months ago

Hello, I don't know, my whatsapp version is changed from 2.2412.50 to 2.3000.1012373576

that is giving me error in wapi.js: webpackChunkwhatsapp_web_client is not defined.

can help me figure it out please ?

iaron commented 3 months ago

same here

wlmpjr commented 3 months ago

The problem is also happening here after version 2.3000.1012482514

andlb commented 3 months ago

I read about an workaround to get the older version while it is not possible to find a solution

https://github.com/pedroslopez/whatsapp-web.js/issues/2789#issuecomment-1972768458

jesussales commented 3 months ago

How implement it in this resport?

El El mié, 3 abr 2024 a las 12:50, Andre Borges @.***> escribió:

I read about an workaround to get the older version while it is not possible to find a solution

pedroslopez/whatsapp-web.js#2789 (comment) https://github.com/pedroslopez/whatsapp-web.js/issues/2789#issuecomment-1972768458

— Reply to this email directly, view it on GitHub https://github.com/mukulhase/WebWhatsapp-Wrapper/issues/1191#issuecomment-2034233998, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAVMMGAWPZ7IFIMAOXIGPHLY3PNGFAVCNFSM6AAAAABFRMTD6WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMZUGIZTGOJZHA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

mraakashjoshi commented 2 months ago

Same error..

andlb commented 2 months ago

I'm working on the solution. The bug is in this part of the code:

`
let tag = new Date().getTime(); webpackChunkwhatsapp_web_client.push([ ["parasite" + tag], {

      },
      function (o, e, t) {
        let modules = [];
        for (let idx in o.m) {
          let module = o(idx);
          modules.push(module);
        }
        getStore(modules);
      }
    ]);
  }

` Is anybody working on the solution too?

mohdsaeed7849 commented 2 months ago

can check this updated wapi.js file : https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr

andlb commented 2 months ago

Ok, it worked for me. Thanks a lot

mraakashjoshi commented 2 months ago

can check this updated wapi.js file : https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr

javascript error: Unexpected token '<'\n (Session info: chrome=123.0.6312.106) getting this error

jesussales commented 2 months ago

Work for me

El jue, 4 abr 2024 a las 12:33, mraakashjoshi @.***>) escribió:

can check this updated wapi.js file : https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr

javascript error: Unexpected token '<'\n (Session info: chrome=123.0.6312.106) getting this error

— Reply to this email directly, view it on GitHub https://github.com/mukulhase/WebWhatsapp-Wrapper/issues/1191#issuecomment-2036802851, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAVMMGE65ETEKD4DUDFKMQTY3UT77AVCNFSM6AAAAABFRMTD6WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMZWHAYDEOBVGE . You are receiving this because you commented.Message ID: @.***>

mraakashjoshi commented 2 months ago

Work for me El jue, 4 abr 2024 a las 12:33, mraakashjoshi @.>) escribió: can check this updated wapi.js file : https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr javascript error: Unexpected token '<'\n (Session info: chrome=123.0.6312.106) getting this error — Reply to this email directly, view it on GitHub <#1191 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAVMMGE65ETEKD4DUDFKMQTY3UT77AVCNFSM6AAAAABFRMTD6WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMZWHAYDEOBVGE . You are receiving this because you commented.Message ID: @.>

can you please give me your JS path? In which language are you using?

andlb commented 2 months ago

you have to replace the wapi.js image

mraakashjoshi commented 2 months ago

you have to replace the wapi.js image

Solved my issue. Thanks you

andlb commented 2 months ago

Hi,

I'm sending some improvement. The API was slow and to solve that, I joined the previous code with the new one. Follow the code to test.

`//Version_JS;Version_TInjectMin;Version_CEF4Min; //3.0.0.0;1.0.0.9;78.3.0

const newMakeStore = () => { let modules = self.require('__debug').modulesMap; let keys = Object.keys(modules).filter(e => e.includes("WA")); let modulesFactory = {}; for (let key of keys) { if (!modules[key]) continue; let module = modules[key]; modulesFactory[key] = { default: module.defaultExport, factory: module.factory, ...module }; if (Object.keys(modulesFactory[key].default).length == 0) { try { self.ErrorGuard.skipGuardGlobal(true); Object.assign(modulesFactory[key], self.importNamespace(key)); } catch (e) { // } } }

function getStore(modules) {
  let foundCount = 0;
  let neededObjects = [
    { id: "Store", conditions: (module) => (module.default && module.default.Chat && module.default.Msg) ? module.default : null },
    { id: "MediaCollection", conditions: (module) => (module.default && module.default.prototype && (module.default.prototype.processFiles !== undefined || module.default.prototype.processAttachments !== undefined)) ? module.default : null },
    { id: "Conn", conditions: (module) => (module.default && module.default.ref && module.default.refTTL) ? module.default : (module.Conn ? module.Conn : null) },
    { id: "MediaProcess", conditions: (module) => (module.BLOB) ? module : null },
    { id: "Archive", conditions: (module) => (module.setArchive) ? module : null },
    { id: "Block", conditions: (module) => (module.blockContact && module.unblockContact) ? module : null },
    { id: "ChatUtil", conditions: (module) => (module.sendClear) ? module : null },
    { id: "GroupInvite", conditions: (module) => (module.sendQueryGroupInviteCode) ? module : null },
    { id: "Wap", conditions: (module) => (module.createGroup) ? module : null },
    { id: "ServiceWorker", conditions: (module) => (module.default && module.default.killServiceWorker) ? module : null },
    { id: "State", conditions: (module) => (module.STATE && module.STREAM) ? module : null },
    { id: "_Presence", conditions: (module) => (module.setPresenceAvailable && module.setPresenceUnavailable) ? module : null },
    { id: "WapDelete", conditions: (module) => (module.sendConversationDelete && module.sendConversationDelete.length == 2) ? module : null },
    { id: 'FindChat', conditions: (module) => (module && module.findChat) ? module : null },
    { id: "WapQuery", conditions: (module) => (module.queryExist) ? module : ((module.default && module.default.queryExist) ? module.default : null) },//Mike 28/10/2022
    { id: "WapQueryMD", conditions: (module) => (module.queryExists && module.queryPhoneExists) || (module.queryWidExists && module.queryPhoneExists) ? module : null }, //MD Mike 09/11/2021               
    { id: 'Perfil', conditions: (module) => module.__esModule === true && module.setPushname && !module.getComposeContents ? module : null },
    { id: "CryptoLib", conditions: (module) => (module.decryptE2EMedia) ? module : null },
    { id: "OpenChat", conditions: (module) => (module.default && module.default.prototype && module.default.prototype.openChat) ? module.default : null },
    { id: "UserConstructor", conditions: (module) => (module.default && module.default.prototype && module.default.prototype.isServer && module.default.prototype.isUser) ? module.default : null },
    { id: "SendTextMsgToChat", conditions: (module) => (module.sendTextMsgToChat) ? module.sendTextMsgToChat : null },
    { id: "ReadSeen", conditions: (module) => (module.sendSeen) ? module : null },
    { id: "sendDelete", conditions: (module) => (module.sendDelete) ? module.sendDelete : null },
    { id: "addAndSendMsgToChat", conditions: (module) => (module.addAndSendMsgToChat) ? module.addAndSendMsgToChat : null },
    { id: "sendMsgToChat", conditions: (module) => (module.sendMsgToChat) ? module.sendMsgToChat : null },
    { id: "Catalog", conditions: (module) => (module.Catalog) ? module.Catalog : null },
    { id: "bp", conditions: (module) => (module.default && module.default.toString && module.default.toString().includes('bp_unknown_version')) ? module.default : null },
    { id: "MsgKey", conditions: (module) => (module.default && module.default.toString && module.default.toString().includes('MsgKey error: obj is null/undefined')) ? module.default : null },
    { id: "Parser", conditions: (module) => (module.convertToTextWithoutSpecialEmojis) ? module.default : null },
    { id: "Builders", conditions: (module) => (module.TemplateMessage && module.HydratedFourRowTemplate) ? module : null },
    { id: "Me", conditions: (module) => (module.PLATFORMS && module.Conn) ? module.default : null },
    { id: "CallUtils", conditions: (module) => (module.sendCallEnd && module.parseCall) ? module : null },
    { id: "Identity", conditions: (module) => (module.queryIdentity && module.updateIdentity) ? module : null },
    { id: "MyStatus", conditions: (module) => (module.getStatus && module.setMyStatus) ? module : null },
    { id: "GroupActions", conditions: (module) => (module.sendExitGroup && module.localExitGroup) ? module : null },
    { id: "Features", conditions: (module) => (module.FEATURE_CHANGE_EVENT && module.features) ? module : null },
    { id: "MessageUtils", conditions: (module) => (module.storeMessages && module.appendMessage) ? module : null },
    { id: "WebMessageInfo", conditions: (module) => (module.WebMessageInfo && module.WebFeatures) ? module.WebMessageInfo : null },
    { id: "createMessageKey", conditions: (module) => (module.createMessageKey && module.createDeviceSentMessage) ? module.createMessageKey : null },
    { id: "Participants", conditions: (module) => (module.addParticipants && module.removeParticipants && module.promoteParticipants && module.demoteParticipants) ? module : null },
    { id: "Base", conditions: (module) => (module.setSubProtocol && module.binSend && module.actionNode) ? module : null },
    { id: "Versions", conditions: (module) => (module.loadProtoVersions && module.default && module.default["15"] && module.default["16"] && module.default["17"]) ? module : null },
    { id: "Sticker", conditions: (module) => (module.default && module.default.Sticker) ? module.default.Sticker : null },
    { id: "MediaUpload", conditions: (module) => (module.default && module.default.mediaUpload) ? module.default : null },
    { id: "UploadUtils", conditions: (module) => (module.default && module.default.encryptAndUpload) ? module.default : null },
    { id: "linkPreview", conditions: (module) => (module.linkPreviewFromContactModel ? module : null) },
    { id: 'Vcard', conditions: (module) => (module.vcardFromContactModel ? module : null) },
    { id: 'Clock', conditions: (module) => (module.Clock ? module.Clock : null) },
    { id: 'TemplateButtonCollection', conditions: (module) => (module.TemplateButtonCollectionImpl || module.TemplateButtonCollection ? module.TemplateButtonCollection : null) },
    { id: 'ButtonCollection', conditions: (module) => (module.ButtonCollectionImpl || module.ButtonCollection ? module.ButtonCollection : null) },
    { id: "MdCheck", conditions: (module) => (module && module.isLegacyWebdBackend) ? module : null },
    { id: "FeatureChecker", conditions: (module) => (module && module.getProtobufFeatureName) ? module : null },
    { id: "GetMaybeMeUser", conditions: (module) => (module && module.getMaybeMeUser) ? module : null },
    { id: "QueryExist", conditions: (module) => (module.queryExist) ? module : null },
    { id: "OpenChat", conditions: (module) => (module.OpenChatFlow) ? module.OpenChatFlow : null },
    { id: "ChatUtilsSetArchive", conditions: (module) => (module.setArchive) ? module : null },
    { id: "ChatState", conditions: (module) => (module.sendChatStateComposing) ? module : null },
    { id: "WidFactory", conditions: (module) => (module.createWid) ? module : null },
    { id: "isMDBackend", conditions: (module) => (module.isMDBackend) ? module : null },
    { id: "PresenceUtils", conditions: (module) => (module.sendPresenceAvailable) ? module : null },
    { id: "MediaPrep", conditions: (module) => (module && module.uploadProductImage && module.MediaPrep) ? module : null },
    { id: "EventEmitter", conditions: (module) => (module.default && module.default.toString && module.default.toString().includes('Callback parameter passed is not a function')) ? module.default : null },
    { id: "MediaTypeFromProtobufModule", conditions: (module) => (module.mediaTypeFromProtobuf) ? module : null },
    { id: "TypeAttributeFromProtobufModule", conditions: (module) => (module.typeAttributeFromProtobuf) ? module : null },
    {
      id: "ChatModel", conditions: (m) => {
        var _a, _b, _c, _d, _e, _f;
        const name = 'ChatModel', baseName = 'Chat', names = [baseName, baseName.replace(/^(\w)/, (l) => l.toLowerCase())]
        if (names.includes(((_b = (_a = m.default) === null || _a === void 0 ? void 0 : _a.prototype) === null || _b === void 0 ? void 0 : _b.proxyName) ||
          ((_d = (_c = m[name]) === null || _c === void 0 ? void 0 : _c.prototype) === null || _d === void 0 ? void 0 : _d.proxyName) ||
          ((_f = (_e = m[baseName]) === null || _e === void 0 ? void 0 : _e.prototype) === null || _f === void 0 ? void 0 : _f.proxyName))) {
          return m.Chat;
        }
        return null;
      }
    },
    {
      id: "ContactModel", conditions: (m) => {
        var _a, _b, _c, _d, _e, _f;
        const name = 'ContactModel', baseName = 'Contact', names = [baseName, baseName.replace(/^(\w)/, (l) => l.toLowerCase())]
        if (names.includes(((_b = (_a = m.default) === null || _a === void 0 ? void 0 : _a.prototype) === null || _b === void 0 ? void 0 : _b.proxyName) ||
          ((_d = (_c = m[name]) === null || _c === void 0 ? void 0 : _c.prototype) === null || _d === void 0 ? void 0 : _d.proxyName) ||
          ((_f = (_e = m[baseName]) === null || _e === void 0 ? void 0 : _e.prototype) === null || _f === void 0 ? void 0 : _f.proxyName))) {
          return m.default;
        }
        return null;
      }
    },
  ];

  window.findModule = function (searchMod) {
    for (let idx in modules) {
      if ((typeof modules[idx] === "object") && (modules[idx] !== null)) {
        const keys = Object.keys(modules[idx]);
        const src_ = keys.find(k => k.includes(searchMod));
        if (src_) {
          console.log(modules[idx])
        }
      }
    }
  }

  for (let idx in modules) {
    if ((typeof modules[idx] === "object") && (modules[idx] !== null)) {
      neededObjects.forEach((needObj) => {
        if (!needObj.conditions || needObj.foundedModule)
          return;
        let neededModule = needObj.conditions(modules[idx]);
        if (neededModule !== null) {
          foundCount++;
          needObj.foundedModule = neededModule;
        }
      });

      if (foundCount == neededObjects.length) {
        break;
      }
    }
  }

  let neededStore = neededObjects.find((needObj) => needObj.id === "Store");
  window.Store = neededStore.foundedModule ? neededStore.foundedModule : {};
  neededObjects.splice(neededObjects.indexOf(neededStore), 1);
  neededObjects.forEach((needObj) => {
    if (needObj.foundedModule) {
      window.Store[needObj.id] = needObj.foundedModule;
    }
  });

  window.Store.Chat._find = e => {
    const target = window.Store.Chat.get(e)
    return target ? Promise.resolve(target) : Promise.resolve({
      id: e
    })
  }      

  window.Store.Chat.modelClass.prototype.sendMessage = function (e) {
    window.Store.SendTextMsgToChat(this, ...arguments);
  }
  //console.log(window.Store)
  return window.Store;
}
getStore(modulesFactory);

}

newMakeStore()

function findVal(object, key) { var value; Object.keys(object).some(function (k) { if (k === key) { value = object[k]; return true; } if (object[k] && typeof object[k] === 'object') { value = findVal(object[k], key); return value !== undefined; } }); return value; }

window.WAPI = { lastRead: {} };

window.WAPI._serializeRawObj = (obj) => { if (obj) { return obj.toJSON(); } return {} };

/**

window.WAPI._serializeChatObj = (obj) => { if (obj == undefined) { return null; }

return Object.assign(window.WAPI._serializeRawObj(obj), { kind: obj.kind, isGroup: obj.isGroup, contact: obj['contact'] ? window.WAPI._serializeContactObj(obj['contact']) : null, groupMetadata: obj["groupMetadata"] ? window.WAPI._serializeRawObj(obj["groupMetadata"]) : null, presence: obj["presence"] ? window.WAPI._serializeRawObj(obj["presence"]) : null, msgs: null }); };

window.WAPI._serializeContactObj = (obj) => { if (obj == undefined) { return null; }

return Object.assign(window.WAPI._serializeRawObj(obj), { formattedName: obj.formattedName, isHighLevelVerified: obj.isHighLevelVerified, isMe: obj.isMe, isMyContact: obj.isMyContact, isPSA: obj.isPSA, isUser: obj.isUser, isVerified: obj.isVerified, isWAContact: obj.isWAContact, profilePicThumbObj: obj.profilePicThumb ? WAPI._serializeProfilePicThumb(obj.profilePicThumb) : {}, statusMute: obj.statusMute, msgs: null }); };

window.WAPI._serializeMessageObj = (obj) => {

if (obj == undefined) { return null; } return Object.assign(window.WAPI._serializeRawObj(obj), { id: obj.id._serialized, sender: obj["senderObj"] ? WAPI._serializeContactObj(obj["senderObj"]) : null, timestamp: obj["t"], content: obj["body"], isGroupMsg: obj.isGroupMsg, isLink: obj.isLink, isMMS: obj.isMMS, isMedia: obj.isMedia, isNotification: obj.isNotification, isPSA: obj.isPSA, type: obj.type, chat: WAPI._serializeChatObj(obj['chat']), chatId: obj.id.remote, quotedMsgObj: WAPI._serializeMessageObj(obj['_quotedMsgObj']), mediaData: window.WAPI._serializeRawObj(obj['mediaData']) }); };

window.WAPI._serializeNumberStatusObj = (obj) => { if (obj == undefined) { return null; }

return Object.assign({}, { id: obj.jid, status: obj.status, isBusiness: (obj.biz === true), canReceiveMessage: (obj.status === 200) }); };

window.WAPI._serializeProfilePicThumb = (obj) => { if (obj == undefined) { return null; }

return Object.assign({}, { eurl: obj.eurl, id: obj.id, img: obj.img, imgFull: obj.imgFull, raw: obj.raw, tag: obj.tag }); }

window.WAPI.createGroup = function (name, contactsId) { if (!Array.isArray(contactsId)) { contactsId = [contactsId]; }

return window.Store.Wap.createGroup(name, contactsId); };

window.WAPI.leaveGroup = function (groupId) { groupId = typeof groupId == "string" ? groupId : groupId._serialized; var group = WAPI.getChat(groupId); return group.sendExit() };

window.WAPI.getAllContacts = function (done) { const contacts = window.Store.Contact.map((contact) => WAPI._serializeContactObj(contact));

if (done !== undefined) done(contacts); return contacts; };

/**

/**

/**

window.WAPI.haveNewMsg = function (chat) { return chat.unreadCount > 0; };

window.WAPI.getAllChatsWithNewMsg = function (done) { const chats = window.Store.Chat.filter(window.WAPI.haveNewMsg).map((chat) => WAPI._serializeChatObj(chat));

if (done !== undefined) done(chats); return chats; };

/**

/**

/**

window.WAPI.getChatByName = function (name, done) { const found = window.WAPI.getAllChats().find(val => val.name.includes(name)) if (done !== undefined) done(found); return found; };

window.WAPI.sendImageFromDatabasePicBot = function (picId, chatId, caption) { var chatDatabase = window.WAPI.getChatByName('DATABASEPICBOT'); var msgWithImg = chatDatabase.msgs.find((msg) => msg.caption == picId);

if (msgWithImg === undefined) { return false; }

// Nova versão Beta if (WAPI.isMultiDeviceVersion()) { WAPI.getChat(chatId, chatSend => { if (chatSend === undefined) { return false; } const oldCaption = msgWithImg.caption;

  msgWithImg.id.id = window.WAPI.getNewId();
  msgWithImg.id.remote = chatId;
  msgWithImg.t = Math.ceil(new Date().getTime() / 1000);
  msgWithImg.to = chatId;

  if (caption !== undefined && caption !== '') {
    msgWithImg.caption = caption;
  } else {
    msgWithImg.caption = '';
  }

  msgWithImg.collection.send(msgWithImg).then(function (e) {
    msgWithImg.caption = oldCaption;
  });

  return true;
});

} else { // Versão antiga var chatSend = WAPI.getChat(chatId); if (chatSend === undefined) { return false; } const oldCaption = msgWithImg.caption;

msgWithImg.id.id = window.WAPI.getNewId();
msgWithImg.id.remote = chatId;
msgWithImg.t = Math.ceil(new Date().getTime() / 1000);
msgWithImg.to = chatId;

if (caption !== undefined && caption !== '') {
  msgWithImg.caption = caption;
} else {
  msgWithImg.caption = '';
}

msgWithImg.collection.send(msgWithImg).then(function (e) {
  msgWithImg.caption = oldCaption;
});

return true;

} };

window.WAPI.sendMessageWithThumb = function (thumb, url, title, description, text, chatId, done) { var chatSend = WAPI.getChat(chatId); if (chatSend === undefined) { if (done !== undefined) done(false); return false; } var linkPreview = { canonicalUrl: url, description: description, matchedText: url, title: title, thumbnail: thumb, compose: true }; chatSend.sendMessage(text, { linkPreview: linkPreview, mentionedJidList: [], quotedMsg: null, quotedMsgAdminGroupJid: null }); if (done !== undefined) done(true); return true; };

window.WAPI.getNewId = function () { var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

for (var i = 0; i < 20; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; };

window.WAPI.getChatById = function (id, done) { let found = WAPI.getChat(id); if (found) { found = WAPI._serializeChatObj(found); } else { found = false; }

if (done !== undefined) done(found); return found; };

/**

/**

/**

window.WAPI.asyncLoadAllEarlierMessages = function (id, done) { done(); window.WAPI.loadAllEarlierMessages(id); };

window.WAPI.areAllMessagesLoaded = function (id, done) { const found = WAPI.getChat(id); if (!found.msgs.msgLoadState.noEarlierMsgs) { if (done) done(false); return false } if (done) done(true); return true };

/**

window.WAPI.loadEarlierMessagesTillDate = function (id, lastMessage, done) { const found = WAPI.getChat(id); x = function () { if (found.msgs.models[0].t > lastMessage && !found.msgs.msgLoadState.noEarlierMsgs) { found.loadEarlierMsgs().then(x); } else { done(); } }; x(); };

/**

/**

};

/**

/**

window.WAPI.getGroupAdmins = async function (id, done) { const output = (await WAPI._getGroupParticipants(id)) .filter((participant) => participant.isAdmin) .map((admin) => admin.id);

if (done !== undefined) done(output); return output; };

/**

window.WAPI.isLoggedIn = function (done) { // Contact always exists when logged in const isLogged = window.Store.Contact && window.Store.Contact.checksum !== undefined;

if (done !== undefined) done(isLogged); return isLogged; };

window.WAPI.isConnected = function (done) { // Phone Disconnected icon appears when phone is disconnected from the tnternet const isConnected = document.querySelector('*[data-icon="alert-phone"]') !== null ? false : true;

if (done !== undefined) done(isConnected); return isConnected; };

window.WAPI.processMessageObj = function (messageObj, includeMe, includeNotifications) { if (messageObj.isNotification) { if (includeNotifications) return WAPI._serializeMessageObj(messageObj); else return; // System message // (i.e. "Messages you send to this chat and calls are now secured with end-to-end encryption...") } else if (messageObj.id.fromMe === false || includeMe) { return WAPI._serializeMessageObj(messageObj); } return; };

window.WAPI.getAllMessagesInChat = function (id, includeMe, includeNotifications, done) { const chat = WAPI.getChat(id); let output = []; const messages = chat.msgs._models;

for (const i in messages) { if (i === "remove") { continue; } const messageObj = messages[i];

let message = WAPI.processMessageObj(messageObj, includeMe, includeNotifications)
if (message)
  output.push(message);

} if (done !== undefined) done(output); return output; };

window.WAPI.getAllMessageIdsInChat = function (id, includeMe, includeNotifications, done) { const chat = WAPI.getChat(id); let output = []; const messages = chat.msgs._models;

for (const i in messages) { if ((i === "remove") || (!includeMe && messages[i].isMe) || (!includeNotifications && messages[i].isNotification)) { continue; } output.push(messages[i].id._serialized); } if (done !== undefined) done(output); return output; };

window.WAPI.getMessageById = function (id, done) { let result = false; try { let msg = window.Store.Msg.get(id); if (msg) { result = WAPI.processMessageObj(msg, true, true); } } catch (err) { }

if (done !== undefined) { done(result); } else { return result; } };

window.WAPI.ReplyMessage = function (idMessage, message, done) { var messageObject = window.Store.Msg.get(idMessage); if (messageObject === undefined) { if (done !== undefined) done(false); return false; } messageObject = messageObject.value();

const chat = WAPI.getChat(messageObject.chat.id) if (chat !== undefined) { if (done !== undefined) { chat.sendMessage(message, null, messageObject).then(function () { function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }

    var trials = 0;

    function check() {
      for (let i = chat.msgs.models.length - 1; i >= 0; i--) {
        let msg = chat.msgs.models[i];

        if (!msg.senderObj.isMe || msg.body != message) {
          continue;
        }
        done(WAPI._serializeMessageObj(msg));
        return True;
      }
      trials += 1;
      console.log(trials);
      if (trials > 30) {
        done(true);
        return;
      }
      sleep(500).then(check);
    }
    check();
  });
  return true;
} else {
  chat.sendMessage(message, null, messageObject);
  return true;
}

} else { if (done !== undefined) done(false); return false; } };

window.WAPI.sendMessageToID = function (id, message, done) {

try { // Nova versão do WhatsApp Beta console.log('Fluxo para Multdevice: ' + id); WAPI.getChat(id, chat => { console.log(chat) if (chat) { chat.sendMessage(message); // console.log('Mensagem enviada!'); done(true); return true; } else { console.log('Mensagem NÃO enviada!'); done(false); return false; } });
} catch (e) { console.log('Erro ao enviar a mensagem: ' + e.message);

if (done !== undefined) done(false);
return false;

} }

window.WAPI.sendMessage = function (id, message, done) { var chat = WAPI.getChat(id); if (chat !== undefined) { if (done !== undefined) { chat.sendMessage(message).then(function () { function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }

    var trials = 0;

    function check() {
      for (let i = chat.msgs.models.length - 1; i >= 0; i--) {
        let msg = chat.msgs.models[i];

        if (!msg.senderObj.isMe || msg.body != message) {
          continue;
        }
        done(WAPI._serializeMessageObj(msg));
        return True;
      }
      trials += 1;
      console.log(trials);
      if (trials > 30) {
        done(true);
        return;
      }
      sleep(500).then(check);
    }
    check();
  });
  return true;
} else {
  chat.sendMessage(message);
  return true;
}

} else { if (done !== undefined) done(false); return false; } };

window.WAPI.sendMessage2 = function (id, message, done) { var chat = WAPI.getChat(id); if (chat !== undefined) { try { if (done !== undefined) { chat.sendMessage(message).then(function () { done(true); }); } else { chat.sendMessage(message); } return true; } catch (error) { if (done !== undefined) done(false) return false; } } if (done !== undefined) done(false) return false; };

window.WAPI.sendSeen = function (id, done) { var chat = window.WAPI.getChat(id); if (chat !== undefined) { if (done !== undefined) { if (chat.getLastMsgKeyForAction === undefined) chat.getLastMsgKeyForAction = function () { }; Store.SendSeen(chat, false).then(function () { done(true); }); return true; } else { Store.SendSeen(chat, false); return true; } } if (done !== undefined) done(); return false; };

function isChatMessage(message) { if (message.isSentByMe) { return false; } if (message.isNotification) { return false; } if (!message.isUserCreatedType) { return false; } return true; }

window.WAPI.getUnreadMessages = function (includeMe, includeNotifications, use_unread_count, done) { const chats = window.Store.Chat.models; let output = [];

for (let chat in chats) { if (isNaN(chat)) { continue; }

let messageGroupObj = chats[chat];
let messageGroup = WAPI._serializeChatObj(messageGroupObj);

messageGroup.messages = [];

const messages = messageGroupObj.msgs._models;
for (let i = messages.length - 1; i >= 0; i--) {
  let messageObj = messages[i];
  if (typeof (messageObj.isNewMsg) != "boolean" || messageObj.isNewMsg === false) {
    continue;
  } else {
    messageObj.isNewMsg = false;
    let message = WAPI.processMessageObj(messageObj, includeMe, includeNotifications);
    if (message) {
      messageGroup.messages.push(message);
    }
  }
}

if (messageGroup.messages.length > 0) {
  output.push(messageGroup);
} else { // no messages with isNewMsg true
  if (use_unread_count) {
    let n = messageGroupObj.unreadCount; // will use unreadCount attribute to fetch last n messages from sender
    for (let i = messages.length - 1; i >= 0; i--) {
      let messageObj = messages[i];
      if (n > 0) {
        if (!messageObj.isSentByMe) {
          let message = WAPI.processMessageObj(messageObj, includeMe, includeNotifications);
          messageGroup.messages.unshift(message);
          n -= 1;
        }
      } else if (n === -1) { // chat was marked as unread so will fetch last message as unread
        if (!messageObj.isSentByMe) {
          let message = WAPI.processMessageObj(messageObj, includeMe, includeNotifications);
          messageGroup.messages.unshift(message);
          break;
        }
      } else { // unreadCount = 0
        break;
      }
    }
    if (messageGroup.messages.length > 0) {
      messageGroupObj.unreadCount = 0; // reset unread counter
      output.push(messageGroup);
    }
  }
}

} if (done !== undefined) { done(output); } return output; };

window.WAPI.getGroupOwnerID = async function (id, done) { const output = (await WAPI.getGroupMetadata(id)).owner.id; if (done !== undefined) { done(output); } return output;

};

window.WAPI.getCommonGroups = async function (id, done) { let output = [];

groups = window.WAPI.getAllGroups();

for (let idx in groups) { try { participants = await window.WAPI.getGroupParticipantIDs(groups[idx].id); if (participants.filter((participant) => participant == id).length) { output.push(groups[idx]); } } catch (err) { console.log("Error in group:"); console.log(groups[idx]); console.log(err); } }

if (done !== undefined) { done(output); } return output; };

window.WAPI.getProfilePicSmallFromId = function (id, done) { window.Store.ProfilePicThumb.find(id).then(function (d) { if (d.img !== undefined) { window.WAPI.downloadFileWithCredentials(d.img, done); } else { done(false); } }, function (e) { done(false); }) };

window.WAPI.getProfilePicFromId = function (id, done) { window.Store.ProfilePicThumb.find(id).then(function (d) { if (d.imgFull !== undefined) { window.WAPI.downloadFileWithCredentials(d.imgFull, done); } else { done(false); } }, function (e) { done(false); }) };

window.WAPI.downloadFileWithCredentials = function (url, done) { let xhr = new XMLHttpRequest();

xhr.onload = function () { if (xhr.readyState == 4) { if (xhr.status == 200) { let reader = new FileReader(); reader.readAsDataURL(xhr.response); reader.onload = function (e) { done(reader.result.substr(reader.result.indexOf(',') + 1)) }; } else { console.error(xhr.statusText); } } else { console.log(err); done(false); } };

xhr.open("GET", url, true); xhr.withCredentials = true; xhr.responseType = 'blob'; xhr.send(null); };

window.WAPI.downloadFile = function (url, done) { let xhr = new XMLHttpRequest();

xhr.onload = function () { if (xhr.readyState == 4) { if (xhr.status == 200) { let reader = new FileReader(); reader.readAsDataURL(xhr.response); reader.onload = function (e) { done(reader.result.substr(reader.result.indexOf(',') + 1)) }; } else { console.error(xhr.statusText); } } else { console.log(err); done(false); } };

xhr.open("GET", url, true); xhr.responseType = 'blob'; xhr.send(null); };

window.WAPI.getBatteryLevel = function (done) { if (window.Store.Conn.plugged) { if (done !== undefined) { done(100); } return 100; } output = window.Store.Conn.battery; if (done !== undefined) { done(output); } return output; };

window.WAPI.deleteConversation = function (chatId, done) { let userId = new window.Store.UserConstructor(chatId, { intentionallyUsePrivateConstructor: true }); let conversation = WAPI.getChat(userId);

if (!conversation) { if (done !== undefined) { done(false); } return false; }

window.Store.sendDelete(conversation, false).then(() => { if (done !== undefined) { done(true); } }).catch(() => { if (done !== undefined) { done(false); } });

return true; };

window.WAPI.deleteMessage = function (chatId, messageArray, revoke = false, done) { let userId = new window.Store.UserConstructor(chatId, { intentionallyUsePrivateConstructor: true }); let conversation = WAPI.getChat(userId);

if (!conversation) { if (done !== undefined) { done(false); } return false; }

if (!Array.isArray(messageArray)) { messageArray = [messageArray]; } let messagesToDelete = messageArray.map(msgId => window.Store.Msg.get(msgId));

if (revoke) { conversation.sendRevokeMsgs(messagesToDelete, conversation); } else { conversation.sendDeleteMsgs(messagesToDelete, conversation); }

if (done !== undefined) { done(true); }

return true; };

window.WAPI.isMultiDeviceVersion = function () { try { var resp = !!Store.GetMaybeMeUser.getMe().device; return resp; } catch { return false; } }

window.WAPI.getMyChatId = () => { return Store.GetMaybeMeUser.getMaybeMeUser(); }

window.WAPI.checkNumberStatus = function (id, done) { window.WAPI.findJidFromNumber(id).then((result) => { if (done !== undefined) { if (result.jid === undefined) throw 404; done(window.WAPI._serializeNumberStatusObj(result)); } }).catch((e) => { if (done !== undefined) { done(window.WAPI._serializeNumberStatusObj({ status: e, jid: id })); } });

return true; };

window.WAPI.findJidFromNumber = (number) => { if (WAPI.isMultiDeviceVersion()) { return new Promise(resolve => { // Multiversion versão antiga Store.QueryExist.queryExist(WAPI.tryFixNumber(number)).then(value => { resolve({ status: 200, jid: value.wid }) }).catch(() => { // Nova versão a partir de 07/07/2022 const _number = number.replace(/[^0-9]/g, '') Store.QueryExist.queryExist({ type: 'phone', phone: _number }).then(data => { if (!data) { resolve({ status: 404 }); } else { resolve({ status: 200, jid: data.wid }) } }).catch(() => { resolve({ status: 404 }); }) }); }); } else { if (!number.includes("@c.us")) number += "@c.us"; return Store.WapQuery.queryExist(number); } }

window.WAPI.tryFixNumber = (number) => { let firstNumbersMe = Store.GetMaybeMeUser.getMaybeMeUser().user.substring(0, 2); let firstNumbersContact = number.substring(0, 2); if (firstNumbersMe === firstNumbersContact) { return number.substring(2); } firstNumbersMe = Store.GetMaybeMeUser.getMaybeMeUser().user.substring(0, 3); firstNumbersContact = number.substring(0, 3); if (firstNumbersMe === firstNumbersContact) { return number.substring(3); } return number; }

/**

window.Store.Msg.off('add'); sessionStorage.removeItem('saved_msgs');

window.WAPI._newMessagesListener = window.Store.Msg.on('add', (newMessage) => { if (newMessage && newMessage.isNewMsg && !newMessage.isSentByMe) { let message = window.WAPI.processMessageObj(newMessage, false, false); if (message) { window.WAPI._newMessagesQueue.push(message); window.WAPI._newMessagesBuffer.push(message); }

// Starts debouncer time to don't call a callback for each message if more than one message arrives
// in the same second
if (!window.WAPI._newMessagesDebouncer && window.WAPI._newMessagesQueue.length > 0) {
  window.WAPI._newMessagesDebouncer = setTimeout(() => {
    let queuedMessages = window.WAPI._newMessagesQueue;

    window.WAPI._newMessagesDebouncer = null;
    window.WAPI._newMessagesQueue = [];

    let removeCallbacks = [];

    window.WAPI._newMessagesCallbacks.forEach(function (callbackObj) {
      if (callbackObj.callback !== undefined) {
        callbackObj.callback(queuedMessages);
      }
      if (callbackObj.rmAfterUse === true) {
        removeCallbacks.push(callbackObj);
      }
    });

    // Remove removable callbacks.
    removeCallbacks.forEach(function (rmCallbackObj) {
      let callbackIndex = window.WAPI._newMessagesCallbacks.indexOf(rmCallbackObj);
      window.WAPI._newMessagesCallbacks.splice(callbackIndex, 1);
    });
  }, 1000);
}

} });

window.WAPI._unloadInform = (event) => { // Save in the buffer the ungot unreaded messages window.WAPI._newMessagesBuffer.forEach((message) => { Object.keys(message).forEach(key => message[key] === undefined ? delete message[key] : ''); }); sessionStorage.setItem("saved_msgs", JSON.stringify(window.WAPI._newMessagesBuffer));

// Inform callbacks that the page will be reloaded. window.WAPI._newMessagesCallbacks.forEach(function (callbackObj) { if (callbackObj.callback !== undefined) { callbackObj.callback({ status: -1, message: 'page will be reloaded, wait and register callback again.' }); } }); };

window.addEventListener("unload", window.WAPI._unloadInform, false); window.addEventListener("beforeunload", window.WAPI._unloadInform, false); window.addEventListener("pageunload", window.WAPI._unloadInform, false);

/**

/**

window.WAPI.sendImage = function (imgBase64, chatid, filename, caption, done) { //var idUser = new window.Store.UserConstructor(chatid); var idUser = new window.Store.UserConstructor(chatid, { intentionallyUsePrivateConstructor: true }); const _filename = filename; // create new chat return Store.Chat.find(idUser).then((chat) => { var mediaBlob = window.WAPI.base64ImageToFile(imgBase64, _filename); var mc = new Store.MediaCollection(chat); mc.processAttachments([{ file: mediaBlob }, 1], 1, chat).then(() => { var media; try { // Old version WhatsApp media = mc.models[0]; } catch { // New version WhatsApp media = mc._models[0]; } media.sendToChat(chat, { caption: caption }); if (done !== undefined) done(true); }); }); }

window.WAPI.base64ImageToFile = function (b64Data, filename) { var arr = b64Data.split(','); var mime = arr[0].match(/:(.*?);/)[1]; var bstr = atob(arr[1]); var n = bstr.length; var u8arr = new Uint8Array(n);

while (n--) { u8arr[n] = bstr.charCodeAt(n); }

return new File([u8arr], filename, { type: mime }); };

/**

/**

/**

/**

/**

/**

neomafo88 commented 2 months ago

FTFY: minified JS → Gzip'ped → Base64-encoded, for quick 'n easy copypasta

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
neomafo88 commented 2 months ago
ErrorUtils caught an error:
bx(...): Unknown file path "9550"
Subsequent non-fatal errors won't be logged; see https://fburl.com/debugjs.

Stack trace:
errorListener @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
reportNormalizedError @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
b.$1 @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
b.mustfixThrow @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
a @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:78
a @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:208
(anonymous) @ qV7nsVLBo_3.js?_nc_x=Ij3Wp8lg5Kz:152
H @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:56
applyWithGuard @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
H @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:56
C @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:56
G @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:56
newMakeStore @ VM40:110
chooseFunction @ VM40:671
(anonymous) @ VM40:673