aboutsummaryrefslogtreecommitdiff
path: root/src/app/api.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/api.rs')
-rw-r--r--src/app/api.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/app/api.rs b/src/app/api.rs
index 6a5d1f8e..cfff3619 100644
--- a/src/app/api.rs
+++ b/src/app/api.rs
@@ -24,6 +24,36 @@ enum RuntimeExitAction {
}
impl App {
+ pub(crate) fn dispatch_tui_api_request(
+ &mut self,
+ id: &'static str,
+ method: crate::api::schema::Method,
+ ) -> String {
+ self.handle_api_request(crate::api::schema::Request {
+ id: id.to_string(),
+ method,
+ })
+ }
+
+ pub(crate) fn dispatch_tui_deferred_api_request(
+ &mut self,
+ id: &'static str,
+ method: crate::api::schema::Method,
+ ) -> Option<String> {
+ let (respond_to, response_rx) = std::sync::mpsc::channel();
+ if !self.handle_deferred_worktree_api_request(
+ crate::api::schema::Request {
+ id: id.to_string(),
+ method,
+ },
+ respond_to,
+ ) {
+ return None;
+ }
+
+ response_rx.try_recv().ok()
+ }
+
pub(crate) fn handle_internal_event(&mut self, ev: AppEvent) {
if let AppEvent::ClipboardWrite { content } = ev {
#[cfg(not(test))]
@@ -817,6 +847,9 @@ impl App {
Method::WorkspaceRename(params) => {
return self.handle_workspace_rename(request.id, params);
}
+ Method::WorkspaceMove(params) => {
+ return self.handle_workspace_move(request.id, params);
+ }
Method::WorkspaceClose(target) => {
return self.handle_workspace_close(request.id, target)
}
@@ -843,6 +876,7 @@ impl App {
Method::TabCreate(params) => return self.handle_tab_create(request.id, params),
Method::TabFocus(target) => return self.handle_tab_focus(request.id, target),
Method::TabRename(params) => return self.handle_tab_rename(request.id, params),
+ Method::TabMove(params) => return self.handle_tab_move(request.id, params),
Method::TabClose(target) => return self.handle_tab_close(request.id, target),
Method::AgentList(_) => return self.handle_agent_list(request.id),
Method::AgentGet(target) => return self.handle_agent_get(request.id, target),
@@ -862,6 +896,9 @@ impl App {
}
Method::LayoutExport(params) => return self.handle_layout_export(request.id, params),
Method::LayoutApply(params) => return self.handle_layout_apply(request.id, params),
+ Method::LayoutSetSplitRatio(params) => {
+ return self.handle_layout_set_split_ratio(request.id, params);
+ }
Method::PaneNeighbor(params) => return self.handle_pane_neighbor(request.id, params),
Method::PaneEdges(params) => return self.handle_pane_edges(request.id, params),
Method::PaneFocusDirection(params) => {
@@ -871,6 +908,7 @@ impl App {
Method::PaneList(params) => return self.handle_pane_list(request.id, params),
Method::PaneCurrent(params) => return self.handle_pane_current(request.id, params),
Method::PaneGet(target) => return self.handle_pane_get(request.id, target),
+ Method::PaneFocus(target) => return self.handle_pane_focus(request.id, target),
Method::PaneRename(params) => return self.handle_pane_rename(request.id, params),
Method::PaneRead(params) => return self.handle_pane_read(request.id, params),
Method::PaneReportAgent(params) => {