Skip to content

Commit 2e77f3c

Browse files
committed
feat: enhance session recovery for disconnected sessions
- Implemented logic to restart sessions that are marked as disconnected, ensuring better session management. - Added cleanup for old sessions and creation of fresh sessions upon disconnection, improving reliability and user experience.
1 parent f22989e commit 2e77f3c

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

src/SessionManager.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,22 @@ export class SessionManager extends EventEmitter {
156156
throw new Error('Session not found');
157157
}
158158

159+
// Restart if disconnected (QR expired)
160+
if (session.status === 'disconnected') {
161+
console.log(`Restarting disconnected session ${sessionId}`);
162+
163+
// Clean up old session
164+
if (session.client) {
165+
await session.client.destroy().catch(() => {});
166+
}
167+
this.sessions.delete(sessionId);
168+
this.qrStates.delete(sessionId);
169+
170+
// Create fresh session
171+
await this.createSession(sessionId);
172+
session = this.sessions.get(sessionId);
173+
}
174+
159175
// If already authenticated, return success
160176
if (session.status === 'ready') {
161177
return {

0 commit comments

Comments
 (0)