From 870b73aa363661cafd9ecc274bea644d6d7142f5 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 20 Dec 2021 18:07:51 -0800 Subject: [PATCH] Send a LeaveProject message when dropping a remote project --- crates/project/src/project.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index fa036c8419..91bdb1e31c 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -749,12 +749,24 @@ impl Entity for Project { type Event = Event; fn release(&mut self, cx: &mut gpui::MutableAppContext) { - if let ProjectClientState::Local { remote_id_rx, .. } = &self.client_state { - if let Some(project_id) = *remote_id_rx.borrow() { + match &self.client_state { + ProjectClientState::Local { remote_id_rx, .. } => { + if let Some(project_id) = *remote_id_rx.borrow() { + let rpc = self.client.clone(); + cx.spawn(|_| async move { + if let Err(err) = rpc.send(proto::UnregisterProject { project_id }).await { + log::error!("error unregistering project: {}", err); + } + }) + .detach(); + } + } + ProjectClientState::Remote { remote_id, .. } => { let rpc = self.client.clone(); + let project_id = *remote_id; cx.spawn(|_| async move { - if let Err(err) = rpc.send(proto::UnregisterProject { project_id }).await { - log::error!("error unregistering project: {}", err); + if let Err(err) = rpc.send(proto::LeaveProject { project_id }).await { + log::error!("error leaving project: {}", err); } }) .detach();