mirror of
https://github.com/cheveguerra/whatsapp-web.js.git
synced 2026-04-20 20:49:14 +00:00
max qr refresh before giving up (#852)
* max qr refresh before giving up * Update src/Client.js Co-authored-by: Rajeh Taher <rajeh@reforward.dev> Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
This commit is contained in:
3
index.d.ts
vendored
3
index.d.ts
vendored
@@ -294,6 +294,9 @@ declare namespace WAWebJS {
|
|||||||
/** Timeout for qr code selector in puppeteer
|
/** Timeout for qr code selector in puppeteer
|
||||||
* @default 45000 */
|
* @default 45000 */
|
||||||
qrTimeoutMs?: number,
|
qrTimeoutMs?: number,
|
||||||
|
/** How many times should the qrcode be refreshed before giving up
|
||||||
|
* @default 0 (disabled) */
|
||||||
|
qrMaxRetries?: number,
|
||||||
/** Restart client with a new session (i.e. use null 'session' var) if authentication fails
|
/** Restart client with a new session (i.e. use null 'session' var) if authentication fails
|
||||||
* @default false */
|
* @default false */
|
||||||
restartOnAuthFail?: boolean
|
restartOnAuthFail?: boolean
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ const { ClientInfo, Message, MessageMedia, Contact, Location, GroupNotification
|
|||||||
* @param {object} options.puppeteer - Puppeteer launch options. View docs here: https://github.com/puppeteer/puppeteer/
|
* @param {object} options.puppeteer - Puppeteer launch options. View docs here: https://github.com/puppeteer/puppeteer/
|
||||||
* @param {number} options.qrRefreshIntervalMs - Refresh interval for qr code (how much time to wait before checking if the qr code has changed)
|
* @param {number} options.qrRefreshIntervalMs - Refresh interval for qr code (how much time to wait before checking if the qr code has changed)
|
||||||
* @param {number} options.qrTimeoutMs - Timeout for qr code selector in puppeteer
|
* @param {number} options.qrTimeoutMs - Timeout for qr code selector in puppeteer
|
||||||
|
* @param {number} options.qrMaxRetries - How many times should the qrcode be refreshed before giving up
|
||||||
* @param {string} options.restartOnAuthFail - Restart client with a new session (i.e. use null 'session' var) if authentication fails
|
* @param {string} options.restartOnAuthFail - Restart client with a new session (i.e. use null 'session' var) if authentication fails
|
||||||
* @param {object} options.session - Whatsapp session to restore. If not set, will start a new session
|
* @param {object} options.session - Whatsapp session to restore. If not set, will start a new session
|
||||||
* @param {string} options.session.WABrowserId
|
* @param {string} options.session.WABrowserId
|
||||||
@@ -127,6 +128,8 @@ class Client extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
let qrRetries = 0;
|
||||||
|
|
||||||
const getQrCode = async () => {
|
const getQrCode = async () => {
|
||||||
// Check if retry button is present
|
// Check if retry button is present
|
||||||
var QR_RETRY_SELECTOR = 'div[data-ref] > span > button';
|
var QR_RETRY_SELECTOR = 'div[data-ref] > span > button';
|
||||||
@@ -147,6 +150,14 @@ class Client extends EventEmitter {
|
|||||||
* @param {string} qr QR Code
|
* @param {string} qr QR Code
|
||||||
*/
|
*/
|
||||||
this.emit(Events.QR_RECEIVED, qr);
|
this.emit(Events.QR_RECEIVED, qr);
|
||||||
|
|
||||||
|
if (this.options.qrMaxRetries > 0) {
|
||||||
|
qrRetries++;
|
||||||
|
if (qrRetries > this.options.qrMaxRetries) {
|
||||||
|
this.emit(Events.DISCONNECTED, 'Max qrcode retries reached');
|
||||||
|
await this.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
getQrCode();
|
getQrCode();
|
||||||
this._qrRefreshInterval = setInterval(getQrCode, this.options.qrRefreshIntervalMs);
|
this._qrRefreshInterval = setInterval(getQrCode, this.options.qrRefreshIntervalMs);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ exports.DefaultOptions = {
|
|||||||
qrTimeoutMs: 45000,
|
qrTimeoutMs: 45000,
|
||||||
qrRefreshIntervalMs: 20000,
|
qrRefreshIntervalMs: 20000,
|
||||||
authTimeoutMs: 45000,
|
authTimeoutMs: 45000,
|
||||||
|
qrMaxRetries: 0,
|
||||||
takeoverOnConflict: false,
|
takeoverOnConflict: false,
|
||||||
takeoverTimeoutMs: 0,
|
takeoverTimeoutMs: 0,
|
||||||
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
|
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
|
||||||
|
|||||||
Reference in New Issue
Block a user