From 8e6fb13e5f296546183f4081848a8dd5836402bb Mon Sep 17 00:00:00 2001 From: iliya Date: Sat, 28 Feb 2026 23:53:10 +0200 Subject: [PATCH] fix: rename closeTab/setActiveTab to closeEditorTab/setActiveEditorTab Resolve naming collision between editorSlice and tabSlice. Both slices defined closeTab and setActiveTab, and since editorSlice was spread last in the store composition, it silently overwrote the tabSlice methods, breaking tab management. --- .../components/team/editor/EditorTabBar.tsx | 4 +-- .../team/editor/ProjectEditorOverlay.tsx | 16 ++++++------ .../hooks/useEditorKeyboardShortcuts.ts | 20 +++++++------- src/renderer/store/slices/editorSlice.ts | 10 +++---- .../hooks/useEditorKeyboardShortcuts.test.ts | 20 +++++++------- test/renderer/store/editorSlice.test.ts | 26 +++++++++---------- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/renderer/components/team/editor/EditorTabBar.tsx b/src/renderer/components/team/editor/EditorTabBar.tsx index aba2de75..b5192a93 100644 --- a/src/renderer/components/team/editor/EditorTabBar.tsx +++ b/src/renderer/components/team/editor/EditorTabBar.tsx @@ -30,7 +30,7 @@ export const EditorTabBar = ({ const tabs = useStore((s) => s.editorOpenTabs); const activeTabId = useStore((s) => s.editorActiveTabId); const modifiedFiles = useStore((s) => s.editorModifiedFiles); - const setActiveTab = useStore((s) => s.setActiveTab); + const setActiveEditorTab = useStore((s) => s.setActiveEditorTab); if (tabs.length === 0) return null; @@ -45,7 +45,7 @@ export const EditorTabBar = ({ tab={tab} isActive={tab.id === activeTabId} isModified={!!modifiedFiles[tab.filePath]} - onActivate={() => setActiveTab(tab.id)} + onActivate={() => setActiveEditorTab(tab.id)} onClose={() => onRequestCloseTab(tab.id)} /> ))} diff --git a/src/renderer/components/team/editor/ProjectEditorOverlay.tsx b/src/renderer/components/team/editor/ProjectEditorOverlay.tsx index 0e81877f..76d7e378 100644 --- a/src/renderer/components/team/editor/ProjectEditorOverlay.tsx +++ b/src/renderer/components/team/editor/ProjectEditorOverlay.tsx @@ -66,7 +66,7 @@ export const ProjectEditorOverlay = ({ const openEditor = useStore((s) => s.openEditor); const closeEditor = useStore((s) => s.closeEditor); const openFile = useStore((s) => s.openFile); - const closeTab = useStore((s) => s.closeTab); + const closeEditorTab = useStore((s) => s.closeEditorTab); const saveFile = useStore((s) => s.saveFile); const activeTabId = useStore((s) => s.editorActiveTabId); const openTabs = useStore((s) => s.editorOpenTabs); @@ -284,10 +284,10 @@ export const ProjectEditorOverlay = ({ if (modifiedFiles[tabId]) { setConfirmCloseTabId(tabId); } else { - closeTab(tabId); + closeEditorTab(tabId); } }, - [modifiedFiles, closeTab] + [modifiedFiles, closeEditorTab] ); // Listen for editor-close-tab custom events from keyboard shortcut hook @@ -303,15 +303,15 @@ export const ProjectEditorOverlay = ({ const handleSaveAndCloseTab = useCallback(async () => { if (!confirmCloseTabId) return; await saveFile(confirmCloseTabId); - closeTab(confirmCloseTabId); + closeEditorTab(confirmCloseTabId); setConfirmCloseTabId(null); - }, [confirmCloseTabId, saveFile, closeTab]); + }, [confirmCloseTabId, saveFile, closeEditorTab]); const handleDiscardAndCloseTab = useCallback(() => { if (!confirmCloseTabId) return; - closeTab(confirmCloseTabId); + closeEditorTab(confirmCloseTabId); setConfirmCloseTabId(null); - }, [confirmCloseTabId, closeTab]); + }, [confirmCloseTabId, closeEditorTab]); const handleCancelCloseTab = useCallback(() => { setConfirmCloseTabId(null); @@ -579,7 +579,7 @@ export const ProjectEditorOverlay = ({ {externalChanges[activeTabId] === 'delete' ? (