aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-04 14:44:52 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-04 14:44:52 +0300
commitc97e0986277e95144f79da3fce5b3fd443f3922f (patch)
treeeea9c75345a489233ccb93f6e5cc248b4286d8c5
parentedd08e895fc65e07e500a1fe80e88202deae6b8d (diff)
refactor: route worktree tui actions through runtime wrappers
-rw-r--r--src/app/runtime_mutations.rs26
-rw-r--r--src/app/worktrees.rs18
2 files changed, 34 insertions, 10 deletions
diff --git a/src/app/runtime_mutations.rs b/src/app/runtime_mutations.rs
index 99cd3623..61a97dcd 100644
--- a/src/app/runtime_mutations.rs
+++ b/src/app/runtime_mutations.rs
@@ -1,7 +1,7 @@
use crate::api::schema::{
LayoutSetSplitRatioParams, Method, PaneFocusDirectionParams, PaneRenameParams,
PaneResizeParams, PaneSplitParams, PaneSwapParams, PaneTarget, PaneZoomParams, TabTarget,
- WorkspaceTarget,
+ WorkspaceTarget, WorktreeCreateParams, WorktreeOpenParams, WorktreeRemoveParams,
};
use super::App;
@@ -98,4 +98,28 @@ impl App {
) -> String {
self.dispatch_runtime_mutation(id, Method::LayoutSetSplitRatio(params))
}
+
+ pub(crate) fn runtime_worktree_create_deferred(
+ &mut self,
+ id: &'static str,
+ params: WorktreeCreateParams,
+ ) -> Option<String> {
+ self.dispatch_deferred_runtime_mutation(id, Method::WorktreeCreate(params))
+ }
+
+ pub(crate) fn runtime_worktree_open(
+ &mut self,
+ id: &'static str,
+ params: WorktreeOpenParams,
+ ) -> String {
+ self.dispatch_runtime_mutation(id, Method::WorktreeOpen(params))
+ }
+
+ pub(crate) fn runtime_worktree_remove_deferred(
+ &mut self,
+ id: &'static str,
+ params: WorktreeRemoveParams,
+ ) -> Option<String> {
+ self.dispatch_deferred_runtime_mutation(id, Method::WorktreeRemove(params))
+ }
}
diff --git a/src/app/worktrees.rs b/src/app/worktrees.rs
index 78448957..05e088b2 100644
--- a/src/app/worktrees.rs
+++ b/src/app/worktrees.rs
@@ -590,9 +590,9 @@ impl App {
let workspace_id = create.source_workspace_id.clone();
let checkout_path = create.checkout_path.display().to_string();
- let immediate_response = self.dispatch_deferred_runtime_mutation(
+ let immediate_response = self.runtime_worktree_create_deferred(
"tui.worktree.create",
- crate::api::schema::Method::WorktreeCreate(crate::api::schema::WorktreeCreateParams {
+ crate::api::schema::WorktreeCreateParams {
workspace_id: Some(workspace_id),
cwd: None,
branch: Some(branch),
@@ -600,7 +600,7 @@ impl App {
base: Some("HEAD".into()),
focus: true,
label: None,
- }),
+ },
);
if let Some(message) = immediate_api_error_message(immediate_response.as_deref()) {
if let Some(create) = &mut self.state.worktree_create {
@@ -720,16 +720,16 @@ impl App {
};
let source_workspace_id = open.source_workspace_id.clone();
- let response = self.dispatch_runtime_mutation(
+ let response = self.runtime_worktree_open(
"tui.worktree.open",
- crate::api::schema::Method::WorktreeOpen(crate::api::schema::WorktreeOpenParams {
+ crate::api::schema::WorktreeOpenParams {
workspace_id: Some(source_workspace_id),
cwd: None,
path: Some(entry.path.display().to_string()),
branch: None,
focus: true,
label: None,
- }),
+ },
);
if serde_json::from_str::<crate::api::schema::SuccessResponse>(&response).is_ok() {
self.state.worktree_open = None;
@@ -763,12 +763,12 @@ impl App {
remove.error = None;
let workspace_id = remove.workspace_id.clone();
let force = remove.force_confirmation;
- let immediate_response = self.dispatch_deferred_runtime_mutation(
+ let immediate_response = self.runtime_worktree_remove_deferred(
"tui.worktree.remove",
- crate::api::schema::Method::WorktreeRemove(crate::api::schema::WorktreeRemoveParams {
+ crate::api::schema::WorktreeRemoveParams {
workspace_id,
force,
- }),
+ },
);
if let Some(message) = immediate_api_error_message(immediate_response.as_deref()) {
if let Some(remove) = &mut self.state.worktree_remove {