diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-29 18:09:25 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-29 18:09:25 +0300 |
| commit | 1a4e94e57e181379e2ed42d63a49fbc56ed1dba4 (patch) | |
| tree | 0319544374f1149a405259070b90df9d62854789 /src/app/api/worktrees/deferred.rs | |
| parent | a937f7e85bbf8780c6030c57f48dab2168bca932 (diff) | |
refactor: route tui mutations through runtime authority
Diffstat (limited to 'src/app/api/worktrees/deferred.rs')
| -rw-r--r-- | src/app/api/worktrees/deferred.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/app/api/worktrees/deferred.rs b/src/app/api/worktrees/deferred.rs index f63a47fd..516e9455 100644 --- a/src/app/api/worktrees/deferred.rs +++ b/src/app/api/worktrees/deferred.rs @@ -366,6 +366,12 @@ impl App { self.pending_api_worktree_creates.remove(&checkout_key); if let Err(err) = result.result { + if let Some(create) = &mut self.state.worktree_create { + if create.checkout_path == result.path { + create.creating = false; + create.error = Some(err.clone()); + } + } Self::send_api_response( api.respond_to, encode_error(api.id, "worktree_create_failed", err), @@ -421,6 +427,17 @@ impl App { ws.set_custom_name(label); } } + if self + .state + .worktree_create + .as_ref() + .is_some_and(|create| create.checkout_path == result.path) + { + self.state.worktree_create = None; + self.state.name_input.clear(); + self.state.name_input_replace_on_type = false; + self.state.mode = crate::app::Mode::Terminal; + } self.state.mark_session_dirty(); if created_workspace { self.emit_workspace_open_events(ws_idx); @@ -492,6 +509,17 @@ impl App { } else { "worktree_remove_failed" }; + if let Some(remove) = &mut self.state.worktree_remove { + if remove.workspace_id == result.workspace_id && remove.path == result.path { + remove.removing = false; + if code == "dirty_worktree_requires_force" && !remove.force_confirmation { + remove.force_confirmation = true; + remove.error = None; + } else { + remove.error = Some(message.clone()); + } + } + } Self::send_api_response(api.respond_to, encode_error(api.id, code, message)); return; } @@ -554,6 +582,16 @@ impl App { worktree, result.forced, ); + if self.state.worktree_remove.as_ref().is_some_and(|remove| { + remove.workspace_id == result.workspace_id && remove.path == result.path + }) { + self.state.worktree_remove = None; + self.state.mode = if self.state.active.is_some() { + crate::app::Mode::Terminal + } else { + crate::app::Mode::Navigate + }; + } let response = encode_success( api.id, ResponseResult::WorktreeRemoved { |
