client: Make `Client::sign_in_with_optional_connect` a no-op when already connected to Collab (#36449)

Marshall Bowers created

This PR makes it so `Client::sign_in_with_optional_connect` does nothing
when the user is already connected to Collab.

This fixes the issue where clicking on a channel link would temporarily
disconnect you from Collab.

Release Notes:

- N/A

Change summary

crates/client/src/client.rs | 5 +++++
1 file changed, 5 insertions(+)

Detailed changes

crates/client/src/client.rs 🔗

@@ -973,6 +973,11 @@ impl Client {
         try_provider: bool,
         cx: &AsyncApp,
     ) -> Result<()> {
+        // Don't try to sign in again if we're already connected to Collab, as it will temporarily disconnect us.
+        if self.status().borrow().is_connected() {
+            return Ok(());
+        }
+
         let (is_staff_tx, is_staff_rx) = oneshot::channel::<bool>();
         let mut is_staff_tx = Some(is_staff_tx);
         cx.update(|cx| {