mirror of
https://github.com/cheveguerra/whatsapp-web.js.git
synced 2026-04-17 19:26:20 +00:00
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:
2
index.d.ts
vendored
2
index.d.ts
vendored
@@ -166,7 +166,7 @@ declare namespace WAWebJS {
|
||||
/** Emitted when the client has been disconnected */
|
||||
on(event: 'disconnected', listener: (
|
||||
/** reason that caused the disconnect */
|
||||
reason: WAState | "NAVIGATED"
|
||||
reason: WAState | "NAVIGATION"
|
||||
) => void): this
|
||||
|
||||
/** Emitted when a user joins the chat via invite link or is added by an admin */
|
||||
|
||||
@@ -74,7 +74,7 @@ class Client extends EventEmitter {
|
||||
} else {
|
||||
browser = await puppeteer.launch(this.options.puppeteer);
|
||||
page = (await browser.pages())[0];
|
||||
}
|
||||
}
|
||||
|
||||
await page.setUserAgent(this.options.userAgent);
|
||||
|
||||
@@ -89,11 +89,13 @@ class Client extends EventEmitter {
|
||||
if (this.options.session) {
|
||||
await page.evaluateOnNewDocument(
|
||||
session => {
|
||||
localStorage.clear();
|
||||
localStorage.setItem('WABrowserId', session.WABrowserId);
|
||||
localStorage.setItem('WASecretBundle', session.WASecretBundle);
|
||||
localStorage.setItem('WAToken1', session.WAToken1);
|
||||
localStorage.setItem('WAToken2', session.WAToken2);
|
||||
if(document.referrer === 'https://whatsapp.com/') {
|
||||
localStorage.clear();
|
||||
localStorage.setItem('WABrowserId', session.WABrowserId);
|
||||
localStorage.setItem('WASecretBundle', session.WASecretBundle);
|
||||
localStorage.setItem('WAToken1', session.WAToken1);
|
||||
localStorage.setItem('WAToken2', session.WAToken2);
|
||||
}
|
||||
}, this.options.session);
|
||||
}
|
||||
|
||||
@@ -104,6 +106,7 @@ class Client extends EventEmitter {
|
||||
await page.goto(WhatsWebURL, {
|
||||
waitUntil: 'load',
|
||||
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"]';
|
||||
@@ -452,7 +455,7 @@ class Client extends EventEmitter {
|
||||
// Disconnect when navigating away when in PAIRING state (detect logout)
|
||||
this.pupPage.on('framenavigated', async () => {
|
||||
const appState = await this.getState();
|
||||
if(appState === WAState.PAIRING) {
|
||||
if(!appState || appState === WAState.PAIRING) {
|
||||
this.emit(Events.DISCONNECTED, 'NAVIGATION');
|
||||
await this.destroy();
|
||||
}
|
||||
@@ -727,6 +730,7 @@ class Client extends EventEmitter {
|
||||
*/
|
||||
async getState() {
|
||||
return await this.pupPage.evaluate(() => {
|
||||
if(!window.Store) return null;
|
||||
return window.Store.AppState.state;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user