From 2259e99a6ebe902e2b12355da3ba07dae0eb34d2 Mon Sep 17 00:00:00 2001 From: Juan Escalada Date: Sat, 18 Oct 2025 12:27:06 +0900 Subject: [PATCH] fix: auto-logout not working when closing tabs and reopening Signed-off-by: Juan Escalada --- .../src/components/AutoLogout/AutoLogout.tsx | 6 ++++++ .../src/components/AutoLogout/disconnectedUsers.ts | 11 +++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/core-components/src/components/AutoLogout/AutoLogout.tsx b/packages/core-components/src/components/AutoLogout/AutoLogout.tsx index 932ac7432b..ddc457842e 100644 --- a/packages/core-components/src/components/AutoLogout/AutoLogout.tsx +++ b/packages/core-components/src/components/AutoLogout/AutoLogout.tsx @@ -146,8 +146,14 @@ const ConditionalAutoLogout = ({ onPrompt: promptBeforeIdle ? onPrompt : undefined, promptBeforeIdle: promptBeforeIdle ? promptBeforeIdleMillis : undefined, syncTimers: 1000, + leaderElection: true, }); + // Check if the current tab is the only active tab. In practice, this gets checked once per second + if (timer.isLeader()) { + lastSeenOnlineStore.save(new Date()); + } + return ( <> {promptBeforeIdle && ( diff --git a/packages/core-components/src/components/AutoLogout/disconnectedUsers.ts b/packages/core-components/src/components/AutoLogout/disconnectedUsers.ts index c09e272eaa..643664e66f 100644 --- a/packages/core-components/src/components/AutoLogout/disconnectedUsers.ts +++ b/packages/core-components/src/components/AutoLogout/disconnectedUsers.ts @@ -51,16 +51,11 @@ export const useLogoutDisconnectedUserEffect = ({ ); if (nowSeconds - lastSeenOnlineSeconds > idleTimeoutSeconds) { identityApi.signOut(); + // Delete lastSeen time to prevent getting locked out after logout + lastSeenOnlineStore.delete(); + return; } } - /** - * save for the first time when app is loaded, so that - * if user logs in and does nothing we still have a - * lastSeenOnline value in store - */ - lastSeenOnlineStore.save(new Date()); - } else { - lastSeenOnlineStore.delete(); } }, [ autologoutIsEnabled,