From 82cee9e9a49b4220c028b6b6f2d1637d132eb5cf Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Wed, 22 Jan 2025 18:47:56 -0500 Subject: [PATCH] assistant2: Don't suggest thread context for inline assist without a `ThreadStore` (#23506) This PR makes it so we don't suggest threads as context in the inline assist when we don't have a `ThreadStore` to pull from. Release Notes: - N/A --- crates/assistant2/src/active_thread.rs | 2 +- crates/assistant2/src/context_picker.rs | 7 ++++++- crates/assistant2/src/context_strip.rs | 8 ++++++-- crates/assistant2/src/ui/context_pill.rs | 4 ++-- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/crates/assistant2/src/active_thread.rs b/crates/assistant2/src/active_thread.rs index 1bfd607866..e87bae48cc 100644 --- a/crates/assistant2/src/active_thread.rs +++ b/crates/assistant2/src/active_thread.rs @@ -259,7 +259,7 @@ impl ActiveThread { h_flex().flex_wrap().gap_1().px_1p5().pb_1p5().children( context .into_iter() - .map(|context| ContextPill::new_added(context, false, false, None)), + .map(|context| ContextPill::added(context, false, false, None)), ), ) } else { diff --git a/crates/assistant2/src/context_picker.rs b/crates/assistant2/src/context_picker.rs index 01e7e2dd33..dbca3a115a 100644 --- a/crates/assistant2/src/context_picker.rs +++ b/crates/assistant2/src/context_picker.rs @@ -89,7 +89,7 @@ impl ContextPicker { ContextKind::Directory, ContextKind::FetchedUrl, ]; - if self.thread_store.is_some() { + if self.allow_threads() { context_kinds.push(ContextKind::Thread); } @@ -132,6 +132,11 @@ impl ContextPicker { menu } + /// Whether threads are allowed as context. + pub fn allow_threads(&self) -> bool { + self.thread_store.is_some() + } + fn select_kind(&mut self, kind: ContextKind, cx: &mut ViewContext) { let context_picker = cx.view().downgrade(); diff --git a/crates/assistant2/src/context_strip.rs b/crates/assistant2/src/context_strip.rs index 2f4e1c3846..9e69d1eea9 100644 --- a/crates/assistant2/src/context_strip.rs +++ b/crates/assistant2/src/context_strip.rs @@ -118,6 +118,10 @@ impl ContextStrip { } fn suggested_thread(&self, cx: &ViewContext) -> Option { + if !self.context_picker.read(cx).allow_threads() { + return None; + } + let workspace = self.workspace.upgrade()?; let active_thread = workspace .read(cx) @@ -432,7 +436,7 @@ impl Render for ContextStrip { } }) .children(context.iter().enumerate().map(|(i, context)| { - ContextPill::new_added( + ContextPill::added( context.clone(), dupe_names.contains(&context.name), self.focused_index == Some(i), @@ -454,7 +458,7 @@ impl Render for ContextStrip { })) .when_some(suggested_context, |el, suggested| { el.child( - ContextPill::new_suggested( + ContextPill::suggested( suggested.name().clone(), suggested.icon_path(), suggested.kind(), diff --git a/crates/assistant2/src/ui/context_pill.rs b/crates/assistant2/src/ui/context_pill.rs index 7e82ed7b69..58ec54a2d4 100644 --- a/crates/assistant2/src/ui/context_pill.rs +++ b/crates/assistant2/src/ui/context_pill.rs @@ -24,7 +24,7 @@ pub enum ContextPill { } impl ContextPill { - pub fn new_added( + pub fn added( context: ContextSnapshot, dupe_name: bool, focused: bool, @@ -39,7 +39,7 @@ impl ContextPill { } } - pub fn new_suggested( + pub fn suggested( name: SharedString, icon_path: Option, kind: ContextKind,