diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 2e549c5d3fd96a855ae66ae151754ab33cb1b6de..70156bb3a587ea8eb2361c7ad966c2005bf390de 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -675,6 +675,23 @@ impl Project { } } + pub fn shared_remote_id(&self) -> Option { + match &self.client_state { + ProjectClientState::Local { + remote_id_rx, + is_shared, + .. + } => { + if *is_shared { + *remote_id_rx.borrow() + } else { + None + } + } + ProjectClientState::Remote { remote_id, .. } => Some(*remote_id), + } + } + pub fn replica_id(&self) -> ReplicaId { match &self.client_state { ProjectClientState::Local { .. } => 0, @@ -1468,13 +1485,14 @@ impl Project { ) -> Option<()> { match event { BufferEvent::Operation(operation) => { - let project_id = self.remote_id()?; - let request = self.client.request(proto::UpdateBuffer { - project_id, - buffer_id: buffer.read(cx).remote_id(), - operations: vec![language::proto::serialize_operation(&operation)], - }); - cx.background().spawn(request).detach_and_log_err(cx); + if let Some(project_id) = self.shared_remote_id() { + let request = self.client.request(proto::UpdateBuffer { + project_id, + buffer_id: buffer.read(cx).remote_id(), + operations: vec![language::proto::serialize_operation(&operation)], + }); + cx.background().spawn(request).detach_and_log_err(cx); + } } BufferEvent::Edited { .. } => { let (_, language_server) = self @@ -1718,7 +1736,7 @@ impl Project { ) .ok(); - if let Some(project_id) = this.remote_id() { + if let Some(project_id) = this.shared_remote_id() { this.client .send(proto::StartLanguageServer { project_id, @@ -2063,7 +2081,7 @@ impl Project { language_server_id: usize, event: proto::update_language_server::Variant, ) { - if let Some(project_id) = self.remote_id() { + if let Some(project_id) = self.shared_remote_id() { self.client .send(proto::UpdateLanguageServer { project_id, @@ -3746,7 +3764,7 @@ impl Project { renamed_buffers.push((cx.handle(), old_path)); } - if let Some(project_id) = self.remote_id() { + if let Some(project_id) = self.shared_remote_id() { self.client .send(proto::UpdateBufferFile { project_id,