fix: dont cause redirect loop due to session restore (#1181)

* fix: dont cause redirect loop due to session restore

* back to `state` in docs

* use referer to determine first injection

* bring bzck disconnect on nav

* revert some changes
This commit is contained in:
Pedro S. Lopez
2022-02-08 22:33:20 -04:00
committed by GitHub
parent 93c8a2b05e
commit 20f3bc7a8b
2 changed files with 12 additions and 8 deletions

2
index.d.ts vendored
View File

@@ -166,7 +166,7 @@ declare namespace WAWebJS {
/** Emitted when the client has been disconnected */ /** Emitted when the client has been disconnected */
on(event: 'disconnected', listener: ( on(event: 'disconnected', listener: (
/** reason that caused the disconnect */ /** reason that caused the disconnect */
reason: WAState | "NAVIGATED" reason: WAState | "NAVIGATION"
) => void): this ) => void): this
/** Emitted when a user joins the chat via invite link or is added by an admin */ /** Emitted when a user joins the chat via invite link or is added by an admin */

View File

@@ -89,11 +89,13 @@ class Client extends EventEmitter {
if (this.options.session) { if (this.options.session) {
await page.evaluateOnNewDocument( await page.evaluateOnNewDocument(
session => { session => {
localStorage.clear(); if(document.referrer === 'https://whatsapp.com/') {
localStorage.setItem('WABrowserId', session.WABrowserId); localStorage.clear();
localStorage.setItem('WASecretBundle', session.WASecretBundle); localStorage.setItem('WABrowserId', session.WABrowserId);
localStorage.setItem('WAToken1', session.WAToken1); localStorage.setItem('WASecretBundle', session.WASecretBundle);
localStorage.setItem('WAToken2', session.WAToken2); localStorage.setItem('WAToken1', session.WAToken1);
localStorage.setItem('WAToken2', session.WAToken2);
}
}, this.options.session); }, this.options.session);
} }
@@ -104,6 +106,7 @@ class Client extends EventEmitter {
await page.goto(WhatsWebURL, { await page.goto(WhatsWebURL, {
waitUntil: 'load', waitUntil: 'load',
timeout: 0, timeout: 0,
referer: 'https://whatsapp.com/'
}); });
const KEEP_PHONE_CONNECTED_IMG_SELECTOR = '[data-icon="intro-md-beta-logo-dark"], [data-icon="intro-md-beta-logo-light"], [data-asset-intro-image-light="true"], [data-asset-intro-image-dark="true"]'; const KEEP_PHONE_CONNECTED_IMG_SELECTOR = '[data-icon="intro-md-beta-logo-dark"], [data-icon="intro-md-beta-logo-light"], [data-asset-intro-image-light="true"], [data-asset-intro-image-dark="true"]';
@@ -452,7 +455,7 @@ class Client extends EventEmitter {
// Disconnect when navigating away when in PAIRING state (detect logout) // Disconnect when navigating away when in PAIRING state (detect logout)
this.pupPage.on('framenavigated', async () => { this.pupPage.on('framenavigated', async () => {
const appState = await this.getState(); const appState = await this.getState();
if(appState === WAState.PAIRING) { if(!appState || appState === WAState.PAIRING) {
this.emit(Events.DISCONNECTED, 'NAVIGATION'); this.emit(Events.DISCONNECTED, 'NAVIGATION');
await this.destroy(); await this.destroy();
} }
@@ -727,6 +730,7 @@ class Client extends EventEmitter {
*/ */
async getState() { async getState() {
return await this.pupPage.evaluate(() => { return await this.pupPage.evaluate(() => {
if(!window.Store) return null;
return window.Store.AppState.state; return window.Store.AppState.state;
}); });
} }