From 46125b201fab89cfea7be3a58ea6371dfd1ea017 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Espino=20Garc=C3=ADa?= Date: Mon, 27 Nov 2023 10:50:40 +0100 Subject: [PATCH] Fix issue when logout is called several times for the same server (#7666) --- app/managers/session_manager.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/managers/session_manager.ts b/app/managers/session_manager.ts index 1ba1fbbb0..4457d03b8 100644 --- a/app/managers/session_manager.ts +++ b/app/managers/session_manager.ts @@ -35,7 +35,7 @@ type LogoutCallbackArg = { class SessionManager { private previousAppState: AppStateStatus; private scheduling = false; - private terminatingSessionUrl: undefined|string; + private terminatingSessionUrl = new Set(); constructor() { if (Platform.OS === 'android') { @@ -162,9 +162,11 @@ class SessionManager { }; private onLogout = async ({serverUrl, removeServer}: LogoutCallbackArg) => { - if (this.terminatingSessionUrl === serverUrl) { + if (this.terminatingSessionUrl.has(serverUrl)) { return; } + this.terminatingSessionUrl.add(serverUrl); + const activeServerUrl = await DatabaseManager.getActiveServerUrl(); const activeServerDisplayName = await DatabaseManager.getActiveServerDisplayName(); @@ -190,10 +192,11 @@ class SessionManager { relaunchApp({launchType, serverUrl, displayName}); } + this.terminatingSessionUrl.delete(serverUrl); }; private onSessionExpired = async (serverUrl: string) => { - this.terminatingSessionUrl = serverUrl; + this.terminatingSessionUrl.add(serverUrl); await logout(serverUrl, false, false, true); await this.terminateSession(serverUrl, false); @@ -206,7 +209,7 @@ class SessionManager { } else { EphemeralStore.theme = undefined; } - this.terminatingSessionUrl = undefined; + this.terminatingSessionUrl.delete(serverUrl); }; }