From d45af4191f487e3f390552cc2b8fd143df473004 Mon Sep 17 00:00:00 2001 From: devlikepro Date: Sat, 10 May 2025 15:39:33 +0700 Subject: [PATCH] [core] WEBJS - properly close remote auth storage --- src/core/engines/webjs/session.webjs.core.ts | 35 ++++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/core/engines/webjs/session.webjs.core.ts b/src/core/engines/webjs/session.webjs.core.ts index 4abe9cd9..c50ddb05 100644 --- a/src/core/engines/webjs/session.webjs.core.ts +++ b/src/core/engines/webjs/session.webjs.core.ts @@ -115,6 +115,7 @@ import { ProtocolError } from 'puppeteer'; import { filter, fromEvent, merge, mergeMap, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { + AuthStrategy, Call, Channel as WEBJSChannel, Chat, @@ -343,10 +344,11 @@ export class WhatsappSessionWebJSCore extends WhatsappSession { private async end() { this.engineStateCheckDelayedJob.cancel(); + this.whatsapp?.removeAllListeners(); + this.whatsapp?.pupBrowser?.removeAllListeners(); + this.whatsapp?.pupPage?.removeAllListeners(); + try { - this.whatsapp?.removeAllListeners(); - this.whatsapp?.pupBrowser?.removeAllListeners(); - this.whatsapp?.pupPage?.removeAllListeners(); // It's possible that browser yet starting await waitUntil( async () => { @@ -357,11 +359,30 @@ export class WhatsappSessionWebJSCore extends WhatsappSession { 1_000, 10_000, ); - this.whatsapp?.destroy().catch((error) => { - this.logger.warn(error, 'Failed to destroy the client'); - }); + this.logger.debug( + 'Successfully waited for browser to be ready for closing', + ); } catch (error) { - this.logger.error(error); + this.logger.error( + error, + 'Failed while waiting for browser to be ready for closing', + ); + } + + try { + await this.whatsapp?.destroy(); + this.logger.debug('Successfully destroyed whatsapp client'); + } catch (error) { + this.logger.error(error, 'Failed to destroy whatsapp client'); + } + + try { + // @ts-ignore + const strategy: AuthStrategy = this.whatsapp?.authStrategy; + await strategy?.destroy(); + this.logger.debug('Successfully destroyed auth strategy'); + } catch (error) { + this.logger.error(error, 'Failed to destroy auth strategy'); } }