diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-19 18:59:43 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-19 18:59:43 +0300 |
| commit | 46a2b259a71828e7fcdeab1f67ef675304e2ca14 (patch) | |
| tree | 0b8aa654d8977ff24ecb25763e961d4a6fa78615 /src/app/runtime.rs | |
| parent | 26c5f97a908c1ebe4228302d1b9e8c5423b2ab75 (diff) | |
fix: defer api worktree operations
refs #686
refs #657
refs #662
refs https://github.com/ogulcancelik/herdr/discussions/687
Diffstat (limited to 'src/app/runtime.rs')
| -rw-r--r-- | src/app/runtime.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/app/runtime.rs b/src/app/runtime.rs index 6ef9a786..e3d5bc92 100644 --- a/src/app/runtime.rs +++ b/src/app/runtime.rs @@ -68,6 +68,20 @@ impl App { crate::api::schema::Method::ServerStop(_) | crate::api::schema::Method::ServerLiveHandoff(_) ); + if matches!( + &msg.request.method, + crate::api::schema::Method::WorktreeCreate(_) + | crate::api::schema::Method::WorktreeRemove(_) + ) { + self.drain_all_internal_events(); + let deferred_changed = + self.handle_deferred_worktree_api_request(msg.request, msg.respond_to); + if !skip_default_workspace { + changed |= self.ensure_default_workspace(); + } + self.sync_prefix_input_source(previous_mode); + return changed | deferred_changed; + } let response = self.handle_api_request(msg.request); if !skip_default_workspace { changed |= self.ensure_default_workspace(); |
