1import type { ScopedThreadRef } from "@t3tools/contracts";
2
3import { selectThreadRightPanelState, useRightPanelStore } from "../rightPanelStore";
4import { useTerminalUiStateStore } from "../terminalUiStateStore";
5import { focusTerminalOnNavigation } from "./terminalFocus";
6
7export function revealThreadTerminal(threadRef: ScopedThreadRef, terminalId: string) {
8 const panels = useRightPanelStore.getState();
9 const surface = selectThreadRightPanelState(panels.byThreadKey, threadRef).surfaces.find(
10 (surface) => surface.kind === "terminal" && surface.terminalIds.includes(terminalId),
11 );
12 if (surface) {
13 panels.activateTerminal(threadRef, surface.id, terminalId);
14 panels.activateSurface(threadRef, surface.id);
15 focusTerminalOnNavigation(threadRef, terminalId);
16 return;
17 }
18 useTerminalUiStateStore.getState().ensureTerminal(threadRef, terminalId, {
19 open: true,
20 active: true,
21 });
22 focusTerminalOnNavigation(threadRef, terminalId);
23}