From 2137c6b4443cae7eb45b40e92a4e7bf38a453ad8 Mon Sep 17 00:00:00 2001 From: Ovgodd Date: Mon, 5 Oct 2026 14:35:12 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(frontend)=20let=20panel=20shortcut?= =?UTF-8?q?s=20close=20panels=20opened=20from=20a=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit allow menu-invoked panels to be closed by panel shortcuts --- .../rooms/livekit/hooks/useSidePanel.ts | 39 ++++++------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/src/frontend/src/features/rooms/livekit/hooks/useSidePanel.ts b/src/frontend/src/features/rooms/livekit/hooks/useSidePanel.ts index 96b125e9..cbdc7742 100644 --- a/src/frontend/src/features/rooms/livekit/hooks/useSidePanel.ts +++ b/src/frontend/src/features/rooms/livekit/hooks/useSidePanel.ts @@ -31,35 +31,20 @@ export const useSidePanel = () => { const isSidePanelOpen = !!activePanelId const isSubPanelOpen = !!activeSubPanelId - const toggleAdmin = () => { - layoutStore.activePanelId = isAdminOpen ? null : PanelId.ADMIN - if (layoutSnap.activeSubPanelId) layoutStore.activeSubPanelId = null + // Reads the live store, not the render snapshot: shortcut handlers outlive + // toggles that unmount (e.g. inside a closed overflow menu). + const togglePanel = (panelId: PanelId) => { + layoutStore.activePanelId = + layoutStore.activePanelId === panelId ? null : panelId + if (layoutStore.activeSubPanelId) layoutStore.activeSubPanelId = null } - const toggleParticipants = () => { - layoutStore.activePanelId = isParticipantsOpen ? null : PanelId.PARTICIPANTS - if (layoutSnap.activeSubPanelId) layoutStore.activeSubPanelId = null - } - - const toggleChat = () => { - layoutStore.activePanelId = isChatOpen ? null : PanelId.CHAT - if (layoutSnap.activeSubPanelId) layoutStore.activeSubPanelId = null - } - - const toggleEffects = () => { - layoutStore.activePanelId = isEffectsOpen ? null : PanelId.EFFECTS - if (layoutSnap.activeSubPanelId) layoutStore.activeSubPanelId = null - } - - const toggleTools = () => { - layoutStore.activePanelId = isToolsOpen ? null : PanelId.TOOLS - if (layoutSnap.activeSubPanelId) layoutStore.activeSubPanelId = null - } - - const toggleInfo = () => { - layoutStore.activePanelId = isInfoOpen ? null : PanelId.INFO - if (layoutSnap.activeSubPanelId) layoutStore.activeSubPanelId = null - } + const toggleAdmin = () => togglePanel(PanelId.ADMIN) + const toggleParticipants = () => togglePanel(PanelId.PARTICIPANTS) + const toggleChat = () => togglePanel(PanelId.CHAT) + const toggleEffects = () => togglePanel(PanelId.EFFECTS) + const toggleTools = () => togglePanel(PanelId.TOOLS) + const toggleInfo = () => togglePanel(PanelId.INFO) const openTranscript = () => { layoutStore.activeSubPanelId = SubPanelId.TRANSCRIPT