MCPcopy Create free account
hub / github.com/Noumena-Network/code / dispatchReplExit

Function dispatchReplExit

src/session/replExitDispatch.ts:1–49  ·  view source on GitHub ↗
(
  state: {
    bgSessionsEnabled: boolean
    bgSessionActive: boolean
    hasCurrentWorktree: boolean
  },
  deps: {
    setIsExiting: (value: boolean) => void
    detachTmuxClient: () => void
    createWorktreeExitFlow: (params: {
      onDone: () => void
      onCancel: () => void
    }) => unknown
    clearExitFlow: () => void
    setExitFlow: (value: unknown) => void
    loadExitModule: () => Promise<{
      call: (onDone: () => void) => Promise<unknown>
    }>
  },
)

Source from the content-addressed store, hash-verified

1export async function dispatchReplExit(
2 state: {
3 bgSessionsEnabled: boolean
4 bgSessionActive: boolean
5 hasCurrentWorktree: boolean
6 },
7 deps: {
8 setIsExiting: (value: boolean) => void
9 detachTmuxClient: () => void
10 createWorktreeExitFlow: (params: {
11 onDone: () => void
12 onCancel: () => void
13 }) => unknown
14 clearExitFlow: () => void
15 setExitFlow: (value: unknown) => void
16 loadExitModule: () => Promise<{
17 call: (onDone: () => void) => Promise<unknown>
18 }>
19 },
20): Promise<void> {
21 deps.setIsExiting(true)
22
23 if (state.bgSessionsEnabled && state.bgSessionActive) {
24 deps.detachTmuxClient()
25 deps.setIsExiting(false)
26 return
27 }
28
29 if (state.hasCurrentWorktree) {
30 deps.setExitFlow(
31 deps.createWorktreeExitFlow({
32 onDone: () => {},
33 onCancel: () => {
34 deps.clearExitFlow()
35 deps.setIsExiting(false)
36 },
37 }),
38 )
39 return
40 }
41
42 const exitMod = await deps.loadExitModule()
43 const exitFlowResult = await exitMod.call(() => {})
44 deps.setExitFlow(exitFlowResult)
45
46 if (exitFlowResult === null) {
47 deps.setIsExiting(false)
48 }
49}

Callers 2

REPLFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected