import { useEffect, type ReactNode } from 'react' import { useTabStore } from '../../stores/tabStore' import { EmptySession } from '../../pages/EmptySession' import { ActiveSession } from '../../pages/ActiveSession' import { ScheduledTasks } from '../../pages/ScheduledTasks' import { Settings } from '../../pages/Settings' import { TerminalSettings } from '../../pages/TerminalSettings' import { TraceList } from '../../pages/TraceList' import { TraceSession } from '../../pages/TraceSession' import { WorkbenchTab } from '../workbench/WorkbenchTab' import { previewBridge } from '../../lib/previewBridge' export function ContentRouter() { const activeTabId = useTabStore((s) => s.activeTabId) const tabs = useTabStore((s) => s.tabs) const activeTabType = tabs.find((t) => t.sessionId === activeTabId)?.type const terminalTabs = tabs.filter((tab) => tab.type === 'terminal') useEffect(() => { if (activeTabType === 'session' || activeTabType === 'workbench') return void previewBridge.close() }, [activeTabType]) let page: ReactNode = null if (!activeTabId || !activeTabType) { page = } else if (activeTabType === 'settings') { page = } else if (activeTabType === 'scheduled') { page = } else if (activeTabType === 'trace') { const traceSessionId = tabs.find((t) => t.sessionId === activeTabId)?.traceSessionId page = traceSessionId ? : } else if (activeTabType === 'traces') { page = } else if (activeTabType === 'workbench') { const workbenchTab = tabs.find((t) => t.sessionId === activeTabId) page = workbenchTab?.workbenchSessionId ? : } else if (activeTabType !== 'terminal') { page = } return (
{page && (
{page}
)} {terminalTabs.map((tab) => { const active = tab.sessionId === activeTabId const visible = activeTabType === 'terminal' && active return (
useTabStore.getState().openTerminalTab(tab.terminalCwd)} />
) })}
) }