aboutsummaryrefslogtreecommitdiff
path: root/src/app/mod.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-29 18:09:25 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-29 18:09:25 +0300
commit1a4e94e57e181379e2ed42d63a49fbc56ed1dba4 (patch)
tree0319544374f1149a405259070b90df9d62854789 /src/app/mod.rs
parenta937f7e85bbf8780c6030c57f48dab2168bca932 (diff)
refactor: route tui mutations through runtime authority
Diffstat (limited to 'src/app/mod.rs')
-rw-r--r--src/app/mod.rs45
1 files changed, 36 insertions, 9 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs
index bf4fecca..65863fd8 100644
--- a/src/app/mod.rs
+++ b/src/app/mod.rs
@@ -884,13 +884,33 @@ impl App {
if self.state.request_new_workspace {
self.state.request_new_workspace = false;
- self.create_workspace();
+ self.dispatch_tui_api_request(
+ "tui.workspace.create",
+ crate::api::schema::Method::WorkspaceCreate(
+ crate::api::schema::WorkspaceCreateParams {
+ cwd: None,
+ focus: true,
+ label: None,
+ env: Default::default(),
+ },
+ ),
+ );
needs_render = true;
}
if self.state.request_new_tab {
self.state.request_new_tab = false;
- self.create_tab();
+ let label = self.state.requested_new_tab_name.take();
+ self.dispatch_tui_api_request(
+ "tui.tab.create",
+ crate::api::schema::Method::TabCreate(crate::api::schema::TabCreateParams {
+ workspace_id: None,
+ cwd: None,
+ focus: true,
+ label,
+ env: Default::default(),
+ }),
+ );
needs_render = true;
}
@@ -905,10 +925,17 @@ impl App {
}
if let Some(cwd) = self.state.request_new_workspace_cwd.take() {
- if let Err(err) = self.create_workspace_with_events(cwd, true) {
- tracing::error!(err = %err, "failed to create workspace at requested cwd");
- self.state.mode = Mode::Navigate;
- }
+ self.dispatch_tui_api_request(
+ "tui.workspace.create_cwd",
+ crate::api::schema::Method::WorkspaceCreate(
+ crate::api::schema::WorkspaceCreateParams {
+ cwd: Some(cwd.display().to_string()),
+ focus: true,
+ label: None,
+ env: Default::default(),
+ },
+ ),
+ );
needs_render = true;
}
@@ -919,19 +946,19 @@ impl App {
if self.state.request_submit_worktree_create {
self.state.request_submit_worktree_create = false;
- self.start_worktree_add();
+ self.submit_worktree_create_via_api();
needs_render = true;
}
if self.state.request_submit_worktree_open {
self.state.request_submit_worktree_open = false;
- self.open_selected_existing_worktree();
+ self.submit_worktree_open_via_api();
needs_render = true;
}
if self.state.request_submit_worktree_remove {
self.state.request_submit_worktree_remove = false;
- self.start_worktree_remove();
+ self.submit_worktree_remove_via_api();
needs_render = true;
}