From e6b9a8ef9bdb4eb46e894d738df7d43c347f4b55 Mon Sep 17 00:00:00 2001 From: Thorsten Ball Date: Thu, 17 Oct 2024 17:49:17 +0200 Subject: [PATCH] ssh remoting: Handle OpenNewBuffer request (#19373) Release Notes: - N/A --- crates/remote_server/src/headless_project.rs | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/crates/remote_server/src/headless_project.rs b/crates/remote_server/src/headless_project.rs index e6eddac1d0eb5b382cd58e8e7d8aec064e706eb7..4536cc94638d858d218d6f12143f4499acaee77f 100644 --- a/crates/remote_server/src/headless_project.rs +++ b/crates/remote_server/src/headless_project.rs @@ -154,6 +154,7 @@ impl HeadlessProject { client.add_request_handler(cx.weak_model(), Self::handle_remove_worktree); client.add_model_request_handler(Self::handle_open_buffer_by_path); + client.add_model_request_handler(Self::handle_open_new_buffer); client.add_model_request_handler(Self::handle_find_search_candidates); client.add_model_request_handler(Self::handle_open_server_settings); @@ -363,6 +364,32 @@ impl HeadlessProject { }) } + pub async fn handle_open_new_buffer( + this: Model, + _message: TypedEnvelope, + mut cx: AsyncAppContext, + ) -> Result { + let (buffer_store, buffer) = this.update(&mut cx, |this, cx| { + let buffer_store = this.buffer_store.clone(); + let buffer = this + .buffer_store + .update(cx, |buffer_store, cx| buffer_store.create_buffer(cx)); + anyhow::Ok((buffer_store, buffer)) + })??; + + let buffer = buffer.await?; + let buffer_id = buffer.read_with(&cx, |b, _| b.remote_id())?; + buffer_store.update(&mut cx, |buffer_store, cx| { + buffer_store + .create_buffer_for_peer(&buffer, SSH_PEER_ID, cx) + .detach_and_log_err(cx); + })?; + + Ok(proto::OpenBufferResponse { + buffer_id: buffer_id.to_proto(), + }) + } + pub async fn handle_open_server_settings( this: Model, _: TypedEnvelope,