diff --git a/src/Client.js b/src/Client.js index c0031a3..ebf317e 100644 --- a/src/Client.js +++ b/src/Client.js @@ -5,7 +5,7 @@ const puppeteer = require('puppeteer'); const moduleRaid = require('moduleraid/moduleraid'); const Util = require('./util/Util'); -const { WhatsWebURL, UserAgent, DefaultOptions, Events } = require('./util/Constants'); +const { WhatsWebURL, UserAgent, DefaultOptions, Events, WAState } = require('./util/Constants'); const { ExposeStore, LoadCustomSerializers } = require('./util/Injected'); const ChatFactory = require('./factories/ChatFactory'); const Chat = require('./structures/Chat'); @@ -110,8 +110,9 @@ class Client extends EventEmitter { this.emit(Events.MESSAGE_RECEIVED, message); }); - await page.exposeFunction('onConnectionChangedEvent', (conn, connected) => { - if (!connected) { + await page.exposeFunction('onAppStateChangedEvent', (AppState, state) => { + const ACCEPTED_STATES = [WAState.CONNECTED, WAState.OPENING, WAState.PAIRING]; + if (!ACCEPTED_STATES.includes(state)) { this.emit(Events.DISCONNECTED); this.destroy(); } @@ -119,7 +120,7 @@ class Client extends EventEmitter { await page.evaluate(() => { Store.Msg.on('add', onAddMessageEvent); - Store.Conn.on('change:connected', onConnectionChangedEvent); + Store.AppState.on('change:state', onAppStateChangedEvent); }).catch(err => console.log(err.message)); this.pupBrowser = browser; diff --git a/src/util/Constants.js b/src/util/Constants.js index 3020957..5ecb30e 100644 --- a/src/util/Constants.js +++ b/src/util/Constants.js @@ -41,4 +41,19 @@ exports.ChatTypes = { SOLO: 'solo', GROUP: 'group', UNKNOWN: 'unknown' +} + +exports.WAState = { + CONFLICT: "CONFLICT", + CONNECTED: "CONNECTED", + DEPRECATED_VERSION: "DEPRECATED_VERSION", + OPENING: "OPENING", + PAIRING: "PAIRING", + PROXYBLOCK: "PROXYBLOCK", + SMB_TOS_BLOCK: "SMB_TOS_BLOCK", + TIMEOUT: "TIMEOUT", + TOS_BLOCK: "TOS_BLOCK", + UNLAUNCHED: "UNLAUNCHED", + UNPAIRED: "UNPAIRED", + UNPAIRED_IDLE: "UNPAIRED_IDLE" } \ No newline at end of file diff --git a/src/util/Injected.js b/src/util/Injected.js index f6c532d..433d9bd 100644 --- a/src/util/Injected.js +++ b/src/util/Injected.js @@ -7,6 +7,7 @@ exports.ExposeStore = (moduleRaidStr) => { eval("var moduleRaid = " + moduleRaidStr); window.mR = moduleRaid(); window.Store = window.mR.findModule("Chat")[1].default; + window.Store.AppState = window.mR.findModule("STREAM")[0].default; window.Store.genId = window.mR.findModule((module) => module.default && typeof module.default === 'function' && module.default.toString().match(/crypto/))[0].default; window.Store.SendMessage = window.mR.findModule("sendTextMsgToChat")[0].sendTextMsgToChat;