From 46a2b259a71828e7fcdeab1f67ef675304e2ca14 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Fri, 19 Jun 2026 18:59:43 +0300 Subject: fix: defer api worktree operations refs #686 refs #657 refs #662 refs https://github.com/ogulcancelik/herdr/discussions/687 --- src/app/runtime.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/app/runtime.rs') 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(); -- cgit v1.2.3