From 0926f235cb18e3492ed9e516df4df46bffed57ee Mon Sep 17 00:00:00 2001 From: asepharyana Date: Thu, 2 Jul 2026 07:45:02 +0700 Subject: [PATCH] fix(auth): only reset activeTab on mount, don't block tab switching Previous code continuously forced activeTab to 'messages' when not authenticated, making dashboard and voice tabs unclickable. Now uses useEffect once on mount to reset localStorage carryover, then lets tab switching work normally. --- services/frontend/src/App.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/services/frontend/src/App.tsx b/services/frontend/src/App.tsx index 2946938..9bf169c 100644 --- a/services/frontend/src/App.tsx +++ b/services/frontend/src/App.tsx @@ -41,7 +41,17 @@ export default function App() { const audio = useAudioPlayback(); const isPublicDashboard = import.meta.env.VITE_DASHBOARD_IS_PUBLIC === "true"; - const activeTab = !authenticated && !isPublicDashboard ? "messages" : uiState.activeTab || "messages"; + const activeTab = uiState.activeTab || "messages"; + + // Reset persisted tab to "messages" once on mount if not authenticated + // Prevents localStorage carryover from a prior session on the Live tab + useEffect(() => { + if (!authenticated && !isPublicDashboard && uiState.activeTab === "live") { + patchUIState({ activeTab: "messages" }); + } + // Run only on mount + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); const selectedVoiceGuild = uiState.selectedVoiceGuild || uiState.selectedGuild || "";