mirror of
https://github.com/stablyai/orca.git
synced 2026-10-22 08:03:37 +00:00
fix(dashboard): clear orphaned chat pane state
This commit is contained in:
@@ -64,7 +64,8 @@ function seedDrafts(store: ReturnType<typeof createTestStore>): void {
|
||||
nativeChatLaunchDraftByTabId: {
|
||||
[TAB1]: draft(TAB1, 'https://github.com/o/r/issues/1'),
|
||||
[TAB2]: draft(TAB2, 'https://github.com/o/r/issues/2')
|
||||
}
|
||||
},
|
||||
runtimeNativeChatLeafIdByTabId: { [TAB1]: 'leaf-1', [TAB2]: 'leaf-2' }
|
||||
})
|
||||
}
|
||||
|
||||
@@ -96,6 +97,16 @@ describe('nativeChatLaunchDraftByTabId teardown', () => {
|
||||
expect(s.nativeChatLaunchDraftByTabId[TAB2]).toBeDefined()
|
||||
})
|
||||
|
||||
it('orphan cleanup drops runtime chat ownership for the removed tab only', () => {
|
||||
const store = createTestStore()
|
||||
seedDrafts(store)
|
||||
|
||||
const patch = buildOrphanTerminalCleanupPatch(store.getState(), WT1, new Set([TAB1]))
|
||||
|
||||
expect(patch.runtimeNativeChatLeafIdByTabId[TAB1]).toBeUndefined()
|
||||
expect(patch.runtimeNativeChatLeafIdByTabId[TAB2]).toBe('leaf-2')
|
||||
})
|
||||
|
||||
it('single removeWorktree drops drafts for the removed worktree only', async () => {
|
||||
const store = createTestStore()
|
||||
seedDrafts(store)
|
||||
|
||||
@@ -39,6 +39,7 @@ type OrphanTerminalCleanupState = Pick<
|
||||
| 'tabsByWorktree'
|
||||
| 'ptyIdsByTabId'
|
||||
| 'runtimePaneTitlesByTabId'
|
||||
| 'runtimeNativeChatLeafIdByTabId'
|
||||
| 'expandedPaneByTabId'
|
||||
| 'canExpandPaneByTabId'
|
||||
| 'terminalLayoutsByTabId'
|
||||
@@ -91,6 +92,7 @@ export function buildOrphanTerminalCleanupPatch(
|
||||
| 'tabsByWorktree'
|
||||
| 'ptyIdsByTabId'
|
||||
| 'runtimePaneTitlesByTabId'
|
||||
| 'runtimeNativeChatLeafIdByTabId'
|
||||
| 'expandedPaneByTabId'
|
||||
| 'canExpandPaneByTabId'
|
||||
| 'terminalLayoutsByTabId'
|
||||
@@ -111,6 +113,7 @@ export function buildOrphanTerminalCleanupPatch(
|
||||
tabsByWorktree: state.tabsByWorktree,
|
||||
ptyIdsByTabId: state.ptyIdsByTabId,
|
||||
runtimePaneTitlesByTabId: state.runtimePaneTitlesByTabId,
|
||||
runtimeNativeChatLeafIdByTabId: state.runtimeNativeChatLeafIdByTabId,
|
||||
expandedPaneByTabId: state.expandedPaneByTabId,
|
||||
canExpandPaneByTabId: state.canExpandPaneByTabId,
|
||||
terminalLayoutsByTabId: state.terminalLayoutsByTabId,
|
||||
@@ -133,6 +136,7 @@ export function buildOrphanTerminalCleanupPatch(
|
||||
)
|
||||
const nextPtyIdsByTabId = { ...state.ptyIdsByTabId }
|
||||
const nextRuntimePaneTitlesByTabId = { ...state.runtimePaneTitlesByTabId }
|
||||
const nextRuntimeNativeChatLeafIdByTabId = { ...state.runtimeNativeChatLeafIdByTabId }
|
||||
const nextExpandedPaneByTabId = { ...state.expandedPaneByTabId }
|
||||
const nextCanExpandPaneByTabId = { ...state.canExpandPaneByTabId }
|
||||
const nextTerminalLayoutsByTabId = { ...state.terminalLayoutsByTabId }
|
||||
@@ -160,6 +164,7 @@ export function buildOrphanTerminalCleanupPatch(
|
||||
for (const orphanTabId of orphanTerminalIds) {
|
||||
delete nextPtyIdsByTabId[orphanTabId]
|
||||
delete nextRuntimePaneTitlesByTabId[orphanTabId]
|
||||
delete nextRuntimeNativeChatLeafIdByTabId[orphanTabId]
|
||||
delete nextExpandedPaneByTabId[orphanTabId]
|
||||
delete nextCanExpandPaneByTabId[orphanTabId]
|
||||
delete nextTerminalLayoutsByTabId[orphanTabId]
|
||||
@@ -191,6 +196,7 @@ export function buildOrphanTerminalCleanupPatch(
|
||||
},
|
||||
ptyIdsByTabId: nextPtyIdsByTabId,
|
||||
runtimePaneTitlesByTabId: nextRuntimePaneTitlesByTabId,
|
||||
runtimeNativeChatLeafIdByTabId: nextRuntimeNativeChatLeafIdByTabId,
|
||||
expandedPaneByTabId: nextExpandedPaneByTabId,
|
||||
canExpandPaneByTabId: nextCanExpandPaneByTabId,
|
||||
terminalLayoutsByTabId: nextTerminalLayoutsByTabId,
|
||||
|
||||
Reference in New Issue
Block a user