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 */
|
/** 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 */
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ class Client extends EventEmitter {
|
|||||||
} else {
|
} else {
|
||||||
browser = await puppeteer.launch(this.options.puppeteer);
|
browser = await puppeteer.launch(this.options.puppeteer);
|
||||||
page = (await browser.pages())[0];
|
page = (await browser.pages())[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
await page.setUserAgent(this.options.userAgent);
|
await page.setUserAgent(this.options.userAgent);
|
||||||
|
|
||||||
@@ -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;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user