diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-04 16:10:33 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-04 16:51:10 +0300 |
| commit | 89fe8975db69e3c92623d531b50ad791878e28fe (patch) | |
| tree | afb25105516213e6362468b0b4bc55690ac03d77 /src/app | |
| parent | 5d9212a55acf4db05b8c5cdf3fee3c56ac404cf7 (diff) | |
refactor: route tui runtime mutations through typed adapters
Diffstat (limited to 'src/app')
| -rw-r--r-- | src/app/input/modal.rs | 30 | ||||
| -rw-r--r-- | src/app/input/navigate.rs | 53 | ||||
| -rw-r--r-- | src/app/mod.rs | 38 | ||||
| -rw-r--r-- | src/app/runtime_mutations.rs | 56 |
4 files changed, 105 insertions, 72 deletions
diff --git a/src/app/input/modal.rs b/src/app/input/modal.rs index ba1fd2d4..82d393d6 100644 --- a/src/app/input/modal.rs +++ b/src/app/input/modal.rs @@ -933,14 +933,12 @@ impl App { match self.state.mode { Mode::RenameWorkspace if !self.state.workspaces.is_empty() && !new_name.is_empty() => { let workspace_id = self.public_workspace_id(self.state.selected); - self.dispatch_runtime_mutation( + self.runtime_workspace_rename( "tui.workspace.rename", - crate::api::schema::Method::WorkspaceRename( - crate::api::schema::WorkspaceRenameParams { - workspace_id, - label: new_name, - }, - ), + crate::api::schema::WorkspaceRenameParams { + workspace_id, + label: new_name, + }, ); } Mode::RenameTab if self.state.creating_new_tab => { @@ -950,15 +948,15 @@ impl App { } else { Some(new_name) }; - self.dispatch_runtime_mutation( + self.runtime_tab_create( "tui.tab.create_named", - crate::api::schema::Method::TabCreate(crate::api::schema::TabCreateParams { + crate::api::schema::TabCreateParams { workspace_id: None, cwd: None, focus: true, label, env: Default::default(), - }), + }, ); } Mode::RenameTab if !new_name.is_empty() => { @@ -976,14 +974,12 @@ impl App { .is_some_and(|name| new_name == name); if !keep_auto_name { if let Some(tab_id) = self.public_tab_id(ws_idx, tab_idx) { - self.dispatch_runtime_mutation( + self.runtime_tab_rename( "tui.tab.rename", - crate::api::schema::Method::TabRename( - crate::api::schema::TabRenameParams { - tab_id, - label: new_name, - }, - ), + crate::api::schema::TabRenameParams { + tab_id, + label: new_name, + }, ); } } diff --git a/src/app/input/navigate.rs b/src/app/input/navigate.rs index 53aa8a5d..b278daac 100644 --- a/src/app/input/navigate.rs +++ b/src/app/input/navigate.rs @@ -109,16 +109,14 @@ impl App { let previous_mode = self.state.mode; match action { NavigateAction::NewWorkspace => { - self.dispatch_runtime_mutation( + self.runtime_workspace_create( "tui.key.workspace.create", - crate::api::schema::Method::WorkspaceCreate( - crate::api::schema::WorkspaceCreateParams { - cwd: None, - focus: true, - label: None, - env: Default::default(), - }, - ), + crate::api::schema::WorkspaceCreateParams { + cwd: None, + focus: true, + label: None, + env: Default::default(), + }, ); leave_navigate_mode(&mut self.state); } @@ -223,17 +221,15 @@ impl App { if self.state.prompt_new_tab_name { super::modal::open_new_tab_dialog(&mut self.state); } else { - self.dispatch_runtime_mutation( + self.runtime_tab_create( "tui.key.tab.create", - crate::api::schema::Method::TabCreate( - crate::api::schema::TabCreateParams { - workspace_id: None, - cwd: None, - focus: true, - label: None, - env: Default::default(), - }, - ), + crate::api::schema::TabCreateParams { + workspace_id: None, + cwd: None, + focus: true, + label: None, + env: Default::default(), + }, ); leave_navigate_mode(&mut self.state); } @@ -330,12 +326,7 @@ impl App { NavigateAction::Help => super::modal::open_keybind_help(&mut self.state), NavigateAction::Settings => super::settings::open_settings(&mut self.state), NavigateAction::ReloadConfig => { - self.dispatch_runtime_mutation( - "tui.server.reload_config", - crate::api::schema::Method::ServerReloadConfig( - crate::api::schema::EmptyParams::default(), - ), - ); + self.runtime_server_reload_config("tui.server.reload_config"); leave_navigate_mode(&mut self.state); } NavigateAction::OpenNotificationTarget => { @@ -368,12 +359,12 @@ impl App { pub(crate) fn move_workspace_via_api(&mut self, source_ws_idx: usize, insert_idx: usize) { let workspace_id = self.public_workspace_id(source_ws_idx); - self.dispatch_runtime_mutation( + self.runtime_workspace_move( "tui.workspace.move", - crate::api::schema::Method::WorkspaceMove(crate::api::schema::WorkspaceMoveParams { + crate::api::schema::WorkspaceMoveParams { workspace_id, insert_index: insert_idx, - }), + }, ); } @@ -420,12 +411,12 @@ impl App { let Some(tab_id) = self.public_tab_id(ws_idx, source_tab_idx) else { return; }; - self.dispatch_runtime_mutation( + self.runtime_tab_move( "tui.tab.move", - crate::api::schema::Method::TabMove(crate::api::schema::TabMoveParams { + crate::api::schema::TabMoveParams { tab_id, insert_index: insert_idx, - }), + }, ); } diff --git a/src/app/mod.rs b/src/app/mod.rs index 7548e39e..2db6c423 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -889,16 +889,14 @@ impl App { if self.state.request_new_workspace { self.state.request_new_workspace = false; - self.dispatch_runtime_mutation( + self.runtime_workspace_create( "tui.workspace.create", - crate::api::schema::Method::WorkspaceCreate( - crate::api::schema::WorkspaceCreateParams { - cwd: None, - focus: true, - label: None, - env: Default::default(), - }, - ), + crate::api::schema::WorkspaceCreateParams { + cwd: None, + focus: true, + label: None, + env: Default::default(), + }, ); needs_render = true; } @@ -906,15 +904,15 @@ impl App { if self.state.request_new_tab { self.state.request_new_tab = false; let label = self.state.requested_new_tab_name.take(); - self.dispatch_runtime_mutation( + self.runtime_tab_create( "tui.tab.create", - crate::api::schema::Method::TabCreate(crate::api::schema::TabCreateParams { + crate::api::schema::TabCreateParams { workspace_id: None, cwd: None, focus: true, label, env: Default::default(), - }), + }, ); needs_render = true; } @@ -930,16 +928,14 @@ impl App { } if let Some(cwd) = self.state.request_new_workspace_cwd.take() { - self.dispatch_runtime_mutation( + self.runtime_workspace_create( "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(), - }, - ), + crate::api::schema::WorkspaceCreateParams { + cwd: Some(cwd.display().to_string()), + focus: true, + label: None, + env: Default::default(), + }, ); needs_render = true; } diff --git a/src/app/runtime_mutations.rs b/src/app/runtime_mutations.rs index 61a97dcd..77cd1f10 100644 --- a/src/app/runtime_mutations.rs +++ b/src/app/runtime_mutations.rs @@ -1,7 +1,9 @@ use crate::api::schema::{ - LayoutSetSplitRatioParams, Method, PaneFocusDirectionParams, PaneRenameParams, - PaneResizeParams, PaneSplitParams, PaneSwapParams, PaneTarget, PaneZoomParams, TabTarget, - WorkspaceTarget, WorktreeCreateParams, WorktreeOpenParams, WorktreeRemoveParams, + EmptyParams, LayoutSetSplitRatioParams, Method, PaneFocusDirectionParams, PaneRenameParams, + PaneResizeParams, PaneSplitParams, PaneSwapParams, PaneTarget, PaneZoomParams, TabCreateParams, + TabMoveParams, TabRenameParams, TabTarget, WorkspaceCreateParams, WorkspaceMoveParams, + WorkspaceRenameParams, WorkspaceTarget, WorktreeCreateParams, WorktreeOpenParams, + WorktreeRemoveParams, }; use super::App; @@ -27,6 +29,30 @@ impl App { self.dispatch_runtime_mutation(id, Method::WorkspaceFocus(WorkspaceTarget { workspace_id })) } + pub(crate) fn runtime_workspace_create( + &mut self, + id: &'static str, + params: WorkspaceCreateParams, + ) -> String { + self.dispatch_runtime_mutation(id, Method::WorkspaceCreate(params)) + } + + pub(crate) fn runtime_workspace_rename( + &mut self, + id: &'static str, + params: WorkspaceRenameParams, + ) -> String { + self.dispatch_runtime_mutation(id, Method::WorkspaceRename(params)) + } + + pub(crate) fn runtime_workspace_move( + &mut self, + id: &'static str, + params: WorkspaceMoveParams, + ) -> String { + self.dispatch_runtime_mutation(id, Method::WorkspaceMove(params)) + } + pub(crate) fn runtime_workspace_close( &mut self, id: &'static str, @@ -35,14 +61,38 @@ impl App { self.dispatch_runtime_mutation(id, Method::WorkspaceClose(WorkspaceTarget { workspace_id })) } + pub(crate) fn runtime_tab_create( + &mut self, + id: &'static str, + params: TabCreateParams, + ) -> String { + self.dispatch_runtime_mutation(id, Method::TabCreate(params)) + } + pub(crate) fn runtime_tab_focus(&mut self, id: &'static str, tab_id: String) -> String { self.dispatch_runtime_mutation(id, Method::TabFocus(TabTarget { tab_id })) } + pub(crate) fn runtime_tab_rename( + &mut self, + id: &'static str, + params: TabRenameParams, + ) -> String { + self.dispatch_runtime_mutation(id, Method::TabRename(params)) + } + + pub(crate) fn runtime_tab_move(&mut self, id: &'static str, params: TabMoveParams) -> String { + self.dispatch_runtime_mutation(id, Method::TabMove(params)) + } + pub(crate) fn runtime_tab_close(&mut self, id: &'static str, tab_id: String) -> String { self.dispatch_runtime_mutation(id, Method::TabClose(TabTarget { tab_id })) } + pub(crate) fn runtime_server_reload_config(&mut self, id: &'static str) -> String { + self.dispatch_runtime_mutation(id, Method::ServerReloadConfig(EmptyParams::default())) + } + pub(crate) fn runtime_pane_focus(&mut self, id: &'static str, pane_id: String) -> String { self.dispatch_runtime_mutation(id, Method::PaneFocus(PaneTarget { pane_id })) } |
