Skip to content

Commit

Permalink
fix: Fixed logout sesseion (close #1274)
Browse files Browse the repository at this point in the history
  • Loading branch information
icleitoncosta committed Jun 2, 2023
1 parent 1372c65 commit bc59707
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 22 deletions.
61 changes: 39 additions & 22 deletions src/controller/sessionController.ts
Expand Up @@ -25,7 +25,7 @@ import config from '../config';
import CreateSessionUtil from '../util/createSessionUtil';
import { callWebHook, contactToArray } from '../util/functions';
import getAllTokens from '../util/getAllTokens';
import { clientsArray } from '../util/sessionUtil';
import { clientsArray, deleteSessionOnArray } from '../util/sessionUtil';

const SessionUtil = new CreateSessionUtil();

Expand Down Expand Up @@ -146,14 +146,13 @@ export async function showAllSessions(req: Request, res: Response) {
/**
* #swagger.tags = ["Auth"]
#swagger.autoBody=false
#swagger.autoQuery=false
#swagger.autoHeaders=false
#swagger.security = [{
"bearerAuth": []
}]
#swagger.parameters["session"] = {
schema: 'NERDWHATS_AMERICA'
}
#swagger.parameters["secretkey"] = {
schema: ''
schema: 'THISISMYSECURETOKEN'
}
*/
const { secretkey } = req.params;
Expand All @@ -180,7 +179,7 @@ export async function showAllSessions(req: Request, res: Response) {
arr.push({ session: item });
});

return res.status(200).json({ response: arr });
return res.status(200).json({ response: await getAllTokens(req) });
}

export async function startSession(req: Request, res: Response) {
Expand Down Expand Up @@ -297,24 +296,42 @@ export async function logOutSession(req: Request, res: Response) {
try {
const session = req.session;
await req.client.logout();
//await req.client.close();
delete clientsArray[req.session];
await fs.promises.rm(config.customUserDataDir + req.session, {
recursive: true,
});
await fs.promises.rm(
__dirname + `../../../tokens/${req.session}.data.json`
);
deleteSessionOnArray(req.session);

setTimeout(async () => {
const pathUserData = config.customUserDataDir + req.session;
const pathTokens = __dirname + `../../../tokens/${req.session}.data.json`;

if (fs.existsSync(pathUserData)) {
await fs.promises.rm(pathUserData, {
recursive: true,
maxRetries: 5,
force: true,
retryDelay: 1000,
});
}
if (fs.existsSync(pathTokens)) {
await fs.promises.rm(pathTokens, {
recursive: true,
maxRetries: 5,
force: true,
retryDelay: 1000,
});
}

req.io.emit('whatsapp-status', false);
callWebHook(req.client, req, 'logoutsession', {
message: `Session: ${session} logged out`,
connected: false,
});
req.io.emit('whatsapp-status', false);
callWebHook(req.client, req, 'logoutsession', {
message: `Session: ${session} logged out`,
connected: false,
});

return await res
.status(200)
.json({ status: true, message: 'Session successfully closed' });
return await res
.status(200)
.json({ status: true, message: 'Session successfully closed' });
}, 500);
/*try {
await req.client.close();
} catch (error) {}*/
} catch (error) {
req.logger.error(error);
return await res
Expand Down
6 changes: 6 additions & 0 deletions src/util/sessionUtil.ts
Expand Up @@ -43,3 +43,9 @@ export const chromiumArgs = [
export let clientsArray: Whatsapp[] = [];
export const sessions = [];
export const eventEmitter = new EventEmitter();

export function deleteSessionOnArray(session: string): void {
const newArray = clientsArray;
delete clientsArray[session];
clientsArray = newArray;
}

0 comments on commit bc59707

Please sign in to comment.