Hide hardcoded Copilot Chat setting if extension is installed

Richard Feldman created

Change summary

Cargo.lock                                                     | 1 
crates/settings_ui/Cargo.toml                                  | 1 
crates/settings_ui/src/pages/edit_prediction_provider_setup.rs | 9 +++
3 files changed, 10 insertions(+), 1 deletion(-)

Detailed changes

Cargo.lock 🔗

@@ -14823,6 +14823,7 @@ dependencies = [
  "copilot",
  "edit_prediction",
  "editor",
+ "extension_host",
  "feature_flags",
  "fs",
  "futures 0.3.31",

crates/settings_ui/Cargo.toml 🔗

@@ -20,6 +20,7 @@ anyhow.workspace = true
 bm25 = "2.3.2"
 copilot.workspace = true
 edit_prediction.workspace = true
+extension_host.workspace = true
 language_models.workspace = true
 editor.workspace = true
 feature_flags.workspace = true

crates/settings_ui/src/pages/edit_prediction_provider_setup.rs 🔗

@@ -3,6 +3,7 @@ use edit_prediction::{
     mercury::{MERCURY_CREDENTIALS_URL, mercury_api_token},
     sweep_ai::{SWEEP_CREDENTIALS_URL, sweep_api_token},
 };
+use extension_host::ExtensionStore;
 use feature_flags::FeatureFlagAppExt as _;
 use gpui::{Entity, ScrollHandle, prelude::*};
 use language_models::provider::mistral::{CODESTRAL_API_URL, codestral_api_key};
@@ -31,8 +32,14 @@ impl Render for EditPredictionSetupPage {
     fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
         let settings_window = self.settings_window.clone();
 
+        let copilot_extension_installed = ExtensionStore::global(cx)
+            .read(cx)
+            .installed_extensions()
+            .contains_key("copilot-chat");
+
         let providers = [
-            Some(render_github_copilot_provider(window, cx).into_any_element()),
+            (!copilot_extension_installed)
+                .then(|| render_github_copilot_provider(window, cx).into_any_element()),
             cx.has_flag::<Zeta2FeatureFlag>().then(|| {
                 render_api_key_provider(
                     IconName::Inception,