diff --git a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/workspace/$workspaceId/page.tsx b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/workspace/$workspaceId/page.tsx index 410abb02656..a6bbc967c16 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/workspace/$workspaceId/page.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/workspace/$workspaceId/page.tsx @@ -81,8 +81,13 @@ function WorkspacePage() { const activeTabIds = useTabsStore((s) => s.activeTabIds); const tabHistoryStacks = useTabsStore((s) => s.tabHistoryStacks); const focusedPaneIds = useTabsStore((s) => s.focusedPaneIds); - const { addTab, splitPaneAuto, splitPaneVertical, splitPaneHorizontal } = - useTabsWithPresets(); + const { + addTab, + splitPaneAuto, + splitPaneVertical, + splitPaneHorizontal, + openPreset, + } = useTabsWithPresets(); const setActiveTab = useTabsStore((s) => s.setActiveTab); const removePane = useTabsStore((s) => s.removePane); const setFocusedPane = useTabsStore((s) => s.setFocusedPane); @@ -114,24 +119,17 @@ function WorkspacePage() { const focusedPaneId = activeTabId ? focusedPaneIds[activeTabId] : null; const { presets } = usePresets(); - const renameTab = useTabsStore((s) => s.renameTab); const openTabWithPreset = useCallback( (presetIndex: number) => { const preset = presets[presetIndex]; if (preset) { - const result = addTab(workspaceId, { - initialCommands: preset.commands, - initialCwd: preset.cwd || undefined, - }); - if (preset.name) { - renameTab(result.tabId, preset.name); - } + openPreset(workspaceId, preset); } else { addTab(workspaceId); } }, - [presets, workspaceId, addTab, renameTab], + [presets, workspaceId, addTab, openPreset], ); useAppHotkey("NEW_GROUP", () => addTab(workspaceId), undefined, [ diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/ContentView/TabsContent/GroupStrip/GroupStrip.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/ContentView/TabsContent/GroupStrip/GroupStrip.tsx index 88040db921f..6924e6c9571 100644 --- a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/ContentView/TabsContent/GroupStrip/GroupStrip.tsx +++ b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/ContentView/TabsContent/GroupStrip/GroupStrip.tsx @@ -1,4 +1,3 @@ -import type { TerminalPreset } from "@superset/local-db"; import { Button } from "@superset/ui/button"; import { DropdownMenu, @@ -41,7 +40,7 @@ export function GroupStrip() { const panes = useTabsStore((s) => s.panes); const activeTabIds = useTabsStore((s) => s.activeTabIds); const tabHistoryStacks = useTabsStore((s) => s.tabHistoryStacks); - const { addTab } = useTabsWithPresets(); + const { addTab, openPreset } = useTabsWithPresets(); const renameTab = useTabsStore((s) => s.renameTab); const removeTab = useTabsStore((s) => s.removeTab); const setActiveTab = useTabsStore((s) => s.setActiveTab); @@ -90,30 +89,9 @@ export function GroupStrip() { addTab(activeWorkspaceId); }; - const addTabWithMultiplePanes = useTabsStore( - (s) => s.addTabWithMultiplePanes, - ); - - const handleSelectPreset = (preset: TerminalPreset) => { + const handleSelectPreset = (preset: Parameters[1]) => { if (!activeWorkspaceId) return; - - const isParallel = - preset.executionMode === "parallel" && preset.commands.length > 1; - - const { tabId } = isParallel - ? addTabWithMultiplePanes(activeWorkspaceId, { - commands: preset.commands, - initialCwd: preset.cwd || undefined, - }) - : addTab(activeWorkspaceId, { - initialCommands: preset.commands, - initialCwd: preset.cwd || undefined, - }); - - if (preset.name) { - renameTab(tabId, preset.name); - } - + openPreset(activeWorkspaceId, preset); setDropdownOpen(false); }; diff --git a/apps/desktop/src/renderer/stores/tabs/useTabsWithPresets.ts b/apps/desktop/src/renderer/stores/tabs/useTabsWithPresets.ts index d27acf01b63..2d082087402 100644 --- a/apps/desktop/src/renderer/stores/tabs/useTabsWithPresets.ts +++ b/apps/desktop/src/renderer/stores/tabs/useTabsWithPresets.ts @@ -1,3 +1,4 @@ +import type { TerminalPreset } from "@superset/local-db"; import { useCallback, useMemo } from "react"; import type { MosaicBranch } from "react-mosaic-component"; import { usePresets } from "renderer/react-query/presets"; @@ -138,12 +139,37 @@ export function useTabsWithPresets() { [storeSplitPaneAuto, defaultPresetOptions], ); + const openPreset = useCallback( + (workspaceId: string, preset: TerminalPreset) => { + const isParallel = + preset.executionMode === "parallel" && preset.commands.length > 1; + + const { tabId } = isParallel + ? storeAddTabWithMultiplePanes(workspaceId, { + commands: preset.commands, + initialCwd: preset.cwd || undefined, + }) + : storeAddTab(workspaceId, { + initialCommands: preset.commands, + initialCwd: preset.cwd || undefined, + }); + + if (preset.name) { + renameTab(tabId, preset.name); + } + + return { tabId }; + }, + [storeAddTab, storeAddTabWithMultiplePanes, renameTab], + ); + return { addTab, addPane, splitPaneVertical, splitPaneHorizontal, splitPaneAuto, + openPreset, defaultPreset, }; }