diff --git a/crates/client/src/client.rs b/crates/client/src/client.rs index 760037c8eb..efda809770 100644 --- a/crates/client/src/client.rs +++ b/crates/client/src/client.rs @@ -346,6 +346,10 @@ impl Client { } } + pub fn has_keychain_credentials(&self, cx: &AsyncAppContext) -> bool { + read_credentials_from_keychain(cx).is_some() + } + #[async_recursion(?Send)] pub async fn authenticate_and_connect( self: &Arc, diff --git a/crates/zed/src/main.rs b/crates/zed/src/main.rs index a06610967e..f34c700c54 100644 --- a/crates/zed/src/main.rs +++ b/crates/zed/src/main.rs @@ -61,6 +61,16 @@ fn main() { chat_panel::init(cx); project_panel::init(cx); diagnostics::init(cx); + cx.spawn({ + let client = client.clone(); + |cx| async move { + if client.has_keychain_credentials(&cx) { + client.authenticate_and_connect(&cx).await?; + } + Ok::<_, anyhow::Error>(()) + } + }) + .detach_and_log_err(cx); let app_state = Arc::new(AppState { languages: languages.clone(),