Change summary
crates/client/src/client.rs | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
Detailed changes
@@ -132,7 +132,7 @@ pub fn init(client: &Arc<Client>, 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<Self>, 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<Self>, cx: &AsyncAppContext) {
self.peer.teardown();
self.set_status(Status::SignedOut, cx);