From 6bbecdd7c0976218544cd31968a53ca121799b74 Mon Sep 17 00:00:00 2001 From: devlikepro Date: Sun, 11 Aug 2024 15:56:53 +0700 Subject: [PATCH] [core] Keep .waha.session. files in directory and remove it in LocalSessionConfigRepository.ts --- src/core/storage/LocalSessionAuthRepository.ts | 14 +++++++++++--- src/core/storage/LocalSessionConfigRepository.ts | 11 ++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/core/storage/LocalSessionAuthRepository.ts b/src/core/storage/LocalSessionAuthRepository.ts index a78427bd..6dd8b109 100644 --- a/src/core/storage/LocalSessionAuthRepository.ts +++ b/src/core/storage/LocalSessionAuthRepository.ts @@ -1,7 +1,10 @@ -import * as fs from 'fs/promises'; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const fs = require('fs-extra'); import { ISessionAuthRepository } from './ISessionAuthRepository'; import { LocalStore } from './LocalStore'; +// Keep all waha related files, ".waha.session.*" +const KEEP_FILES = /^\.waha\.session\..*$/; export class LocalSessionAuthRepository extends ISessionAuthRepository { private store: LocalStore; @@ -16,7 +19,12 @@ export class LocalSessionAuthRepository extends ISessionAuthRepository { } async clean(sessionName: string) { - const folder = this.store.getSessionDirectory(sessionName); - await fs.rm(folder, { recursive: true }); + // Remove all files and directories recursively, but keep waha files + const sessionDirectory = this.store.getSessionDirectory(sessionName); + const files = await fs.readdir(sessionDirectory); + const filesToRemove = files.filter((file) => !file.match(KEEP_FILES)); + for (const file of filesToRemove) { + await fs.remove(`${sessionDirectory}/${file}`); + } } } diff --git a/src/core/storage/LocalSessionConfigRepository.ts b/src/core/storage/LocalSessionConfigRepository.ts index fe7b2e5e..9d9d037f 100644 --- a/src/core/storage/LocalSessionConfigRepository.ts +++ b/src/core/storage/LocalSessionConfigRepository.ts @@ -1,5 +1,5 @@ -import * as fs from 'fs/promises'; -import * as path from 'path'; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const fs = require('fs-extra'); import { SessionConfig } from '../../structures/sessions.dto'; import { ISessionConfigRepository } from './ISessionConfigRepository'; @@ -56,11 +56,8 @@ export class LocalSessionConfigRepository extends ISessionConfigRepository { } async delete(sessionName: string): Promise { - const filepath = this.getFilePath(sessionName); - if (!(await this.fileExists(filepath))) { - return; - } - await fs.unlink(filepath); + const sessionDirectory = this.store.getSessionDirectory(sessionName); + await fs.remove(sessionDirectory); } async getAll(): Promise {