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/mod.rs | |
| parent | a937f7e85bbf8780c6030c57f48dab2168bca932 (diff) | |
refactor: route tui mutations through runtime authority
Diffstat (limited to 'src/app/mod.rs')
| -rw-r--r-- | src/app/mod.rs | 45 |
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; } |
