From dc591fe7c7654769ceee76fa570a11c214406389 Mon Sep 17 00:00:00 2001 From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Date: Wed, 9 Jul 2025 20:57:35 -0300 Subject: [PATCH] Hide unused extension types from the extension UI (#34166) This PR hides "slash commands" and "indexed docs providers" from the extensions UI as these are virtually completely unused types of extensions. Release Notes: - N/A --- crates/extensions_ui/src/extensions_ui.rs | 78 ++++++++++++++--------- 1 file changed, 47 insertions(+), 31 deletions(-) diff --git a/crates/extensions_ui/src/extensions_ui.rs b/crates/extensions_ui/src/extensions_ui.rs index 48cb41a006560b17b2812939f41f36cf0bee9aee..0d00deb10e64ec72e3bf64b1c8ce0929d944104a 100644 --- a/crates/extensions_ui/src/extensions_ui.rs +++ b/crates/extensions_ui/src/extensions_ui.rs @@ -718,24 +718,34 @@ impl ExtensionsPage { } parent.child( - h_flex().gap_2().children( + h_flex().gap_1().children( extension .manifest .provides .iter() - .map(|provides| { - div() - .bg(cx.theme().colors().element_background) - .px_0p5() - .border_1() - .border_color(cx.theme().colors().border) - .rounded_sm() - .child( - Label::new(extension_provides_label( - *provides, - )) - .size(LabelSize::XSmall), - ) + .filter_map(|provides| { + match provides { + ExtensionProvides::SlashCommands + | ExtensionProvides::IndexedDocsProviders => { + return None; + } + _ => {} + } + + Some( + div() + .px_1() + .border_1() + .rounded_sm() + .border_color(cx.theme().colors().border) + .bg(cx.theme().colors().element_background) + .child( + Label::new(extension_provides_label( + *provides, + )) + .size(LabelSize::XSmall), + ), + ) }) .collect::>(), ), @@ -744,8 +754,7 @@ impl ExtensionsPage { ) .child( h_flex() - .gap_2() - .justify_between() + .gap_1() .children(buttons.upgrade) .children(buttons.configure) .child(buttons.install_or_uninstall), @@ -1452,23 +1461,30 @@ impl Render for ExtensionsPage { this.change_provides_filter(None, cx); })), ) - .children(ExtensionProvides::iter().map(|provides| { + .children(ExtensionProvides::iter().filter_map(|provides| { + match provides { + ExtensionProvides::SlashCommands + | ExtensionProvides::IndexedDocsProviders => return None, + _ => {} + } + let label = extension_provides_label(provides); - Button::new( - SharedString::from(format!("filter-category-{}", label)), - label, + let button_id = SharedString::from(format!("filter-category-{}", label)); + + Some( + Button::new(button_id, label) + .style(if self.provides_filter == Some(provides) { + ButtonStyle::Filled + } else { + ButtonStyle::Subtle + }) + .toggle_state(self.provides_filter == Some(provides)) + .on_click({ + cx.listener(move |this, _event, _, cx| { + this.change_provides_filter(Some(provides), cx); + }) + }), ) - .style(if self.provides_filter == Some(provides) { - ButtonStyle::Filled - } else { - ButtonStyle::Subtle - }) - .toggle_state(self.provides_filter == Some(provides)) - .on_click({ - cx.listener(move |this, _event, _, cx| { - this.change_provides_filter(Some(provides), cx); - }) - }) })), ) .child(self.render_feature_upsells(cx))