MCPcopy
hub / github.com/codeaashu/claude-code / handleSelect

Function handleSelect

src/components/WorktreeExitDialog.tsx:97–168  ·  view source on GitHub ↗
(value: string)

Source from the content-addressed store, hash-verified

95 return null;
96 }
97 async function handleSelect(value: string) {
98 if (!worktreeSession) return;
99 const hasTmux = Boolean(worktreeSession.tmuxSessionName);
100 if (value === 'keep' || value === 'keep-with-tmux') {
101 setStatus('keeping');
102 logEvent('tengu_worktree_kept', {
103 commits: commitCount,
104 changed_files: changes.length
105 });
106 await keepWorktree();
107 process.chdir(worktreeSession.originalCwd);
108 setCwd(worktreeSession.originalCwd);
109 recordWorktreeExit();
110 getPlansDirectory.cache.clear?.();
111 if (hasTmux) {
112 setResultMessage(`Worktree kept. Your work is saved at ${worktreeSession.worktreePath} on branch ${worktreeSession.worktreeBranch}. Reattach to tmux session with: tmux attach -t ${worktreeSession.tmuxSessionName}`);
113 } else {
114 setResultMessage(`Worktree kept. Your work is saved at ${worktreeSession.worktreePath} on branch ${worktreeSession.worktreeBranch}`);
115 }
116 setStatus('done');
117 } else if (value === 'keep-kill-tmux') {
118 setStatus('keeping');
119 logEvent('tengu_worktree_kept', {
120 commits: commitCount,
121 changed_files: changes.length
122 });
123 if (worktreeSession.tmuxSessionName) {
124 await killTmuxSession(worktreeSession.tmuxSessionName);
125 }
126 await keepWorktree();
127 process.chdir(worktreeSession.originalCwd);
128 setCwd(worktreeSession.originalCwd);
129 recordWorktreeExit();
130 getPlansDirectory.cache.clear?.();
131 setResultMessage(`Worktree kept at ${worktreeSession.worktreePath} on branch ${worktreeSession.worktreeBranch}. Tmux session terminated.`);
132 setStatus('done');
133 } else if (value === 'remove' || value === 'remove-with-tmux') {
134 setStatus('removing');
135 logEvent('tengu_worktree_removed', {
136 commits: commitCount,
137 changed_files: changes.length
138 });
139 if (worktreeSession.tmuxSessionName) {
140 await killTmuxSession(worktreeSession.tmuxSessionName);
141 }
142 try {
143 await cleanupWorktree();
144 process.chdir(worktreeSession.originalCwd);
145 setCwd(worktreeSession.originalCwd);
146 recordWorktreeExit();
147 getPlansDirectory.cache.clear?.();
148 } catch (error) {
149 logForDebugging(`Failed to clean up worktree: ${error}`, {
150 level: 'error'
151 });
152 setResultMessage('Worktree cleanup failed, exiting anyway');
153 setStatus('done');
154 return;

Callers 1

handleCancelFunction · 0.70

Calls 9

logEventFunction · 0.85
keepWorktreeFunction · 0.85
setCwdFunction · 0.85
recordWorktreeExitFunction · 0.85
killTmuxSessionFunction · 0.85
cleanupWorktreeFunction · 0.85
logForDebuggingFunction · 0.85
setStatusFunction · 0.50
clearMethod · 0.45

Tested by

no test coverage detected