diff --git a/crates/extensions_ui/src/extensions_ui.rs b/crates/extensions_ui/src/extensions_ui.rs index bc02c7eef148aacc5de65dee7fea20fcf0899b73..03bbe92927a345c753dc8ac43f15ebf83b2055a3 100644 --- a/crates/extensions_ui/src/extensions_ui.rs +++ b/crates/extensions_ui/src/extensions_ui.rs @@ -320,6 +320,7 @@ pub struct ExtensionsPage { remote_extension_entries: Vec, dev_extension_entries: Vec>, filtered_remote_extension_indices: Vec, + filtered_dev_extension_indices: Vec, query_editor: Entity, query_contains_error: bool, provides_filter: Option, @@ -381,6 +382,7 @@ impl ExtensionsPage { filter: ExtensionFilter::All, dev_extension_entries: Vec::new(), filtered_remote_extension_indices: Vec::new(), + filtered_dev_extension_indices: Vec::new(), remote_extension_entries: Vec::new(), query_contains_error: false, provides_filter, @@ -493,6 +495,19 @@ impl ExtensionsPage { }) .map(|(ix, _)| ix), ); + + self.filtered_dev_extension_indices.clear(); + self.filtered_dev_extension_indices.extend( + self.dev_extension_entries + .iter() + .enumerate() + .filter(|(_, manifest)| match self.provides_filter { + Some(provides) => manifest.provides().contains(&provides), + None => true, + }) + .map(|(ix, _)| ix), + ); + cx.notify(); } @@ -601,14 +616,15 @@ impl ExtensionsPage { cx: &mut Context, ) -> Vec { let dev_extension_entries_len = if self.filter.include_dev_extensions() { - self.dev_extension_entries.len() + self.filtered_dev_extension_indices.len() } else { 0 }; range .map(|ix| { if ix < dev_extension_entries_len { - let extension = &self.dev_extension_entries[ix]; + let dev_ix = self.filtered_dev_extension_indices[ix]; + let extension = &self.dev_extension_entries[dev_ix]; self.render_dev_extension(extension, cx) } else { let extension_ix = @@ -1821,7 +1837,7 @@ impl Render for ExtensionsPage { .child(v_flex().px_4().size_full().overflow_y_hidden().map(|this| { let mut count = self.filtered_remote_extension_indices.len(); if self.filter.include_dev_extensions() { - count += self.dev_extension_entries.len(); + count += self.filtered_dev_extension_indices.len(); } if count == 0 {