diff --git a/crates/client/src/client.rs b/crates/client/src/client.rs index db88afb038..7d18e5d2db 100644 --- a/crates/client/src/client.rs +++ b/crates/client/src/client.rs @@ -132,7 +132,7 @@ pub fn init(client: &Arc, cx: &mut AppContext) { move |_: &SignOut, cx| { if let Some(client) = client.upgrade() { cx.spawn(|cx| async move { - client.disconnect(&cx); + client.sign_out(&cx).await; }) .detach(); } @@ -1250,6 +1250,15 @@ impl Client { }) } + pub async fn sign_out(self: &Arc, cx: &AsyncAppContext) { + self.state.write().credentials = None; + self.disconnect(&cx); + + if self.has_keychain_credentials(cx).await { + delete_credentials_from_keychain(cx).await.log_err(); + } + } + pub fn disconnect(self: &Arc, cx: &AsyncAppContext) { self.peer.teardown(); self.set_status(Status::SignedOut, cx);