36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
// 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;
|
|
|
|
constructor(store: LocalStore) {
|
|
super();
|
|
this.store = store;
|
|
}
|
|
|
|
async init(sessionName?: string) {
|
|
await this.store.init(sessionName);
|
|
}
|
|
|
|
async clean(sessionName: string) {
|
|
// Remove all files and directories recursively, but keep waha files
|
|
const sessionDirectory = this.store.getSessionDirectory(sessionName);
|
|
// Check it exists and it's directory
|
|
const exists = await fs.pathExists(sessionDirectory);
|
|
if (!exists) {
|
|
return;
|
|
}
|
|
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}`);
|
|
}
|
|
}
|
|
}
|