Change summary
crates/assistant2/src/assistant_panel.rs | 9 +++++++--
crates/assistant2/src/thread_history.rs | 14 +++++++++++++-
crates/assistant2/src/thread_store.rs | 4 ++++
3 files changed, 24 insertions(+), 3 deletions(-)
Detailed changes
@@ -106,6 +106,10 @@ impl AssistantPanel {
}
}
+ pub(crate) fn local_timezone(&self) -> UtcOffset {
+ self.local_timezone
+ }
+
fn new_thread(&mut self, cx: &mut ViewContext<Self>) {
let thread = self
.thread_store
@@ -147,8 +151,9 @@ impl AssistantPanel {
self.message_editor.focus_handle(cx).focus(cx);
}
- pub(crate) fn local_timezone(&self) -> UtcOffset {
- self.local_timezone
+ pub(crate) fn delete_thread(&mut self, thread_id: &ThreadId, cx: &mut ViewContext<Self>) {
+ self.thread_store
+ .update(cx, |this, cx| this.delete_thread(thread_id, cx));
}
}
@@ -127,11 +127,23 @@ impl RenderOnce for PastThread {
.child(
IconButton::new("delete", IconName::TrashAlt)
.shape(IconButtonShape::Square)
- .icon_size(IconSize::Small),
+ .icon_size(IconSize::Small)
+ .on_click({
+ let assistant_panel = self.assistant_panel.clone();
+ let id = id.clone();
+ move |_event, cx| {
+ assistant_panel
+ .update(cx, |this, cx| {
+ this.delete_thread(&id, cx);
+ })
+ .ok();
+ }
+ }),
),
)
.on_click({
let assistant_panel = self.assistant_panel.clone();
+ let id = id.clone();
move |_event, cx| {
assistant_panel
.update(cx, |this, cx| {
@@ -80,6 +80,10 @@ impl ThreadStore {
.cloned()
}
+ pub fn delete_thread(&mut self, id: &ThreadId, cx: &mut ModelContext<Self>) {
+ self.threads.retain(|thread| thread.read(cx).id() != id);
+ }
+
fn register_context_server_handlers(&self, cx: &mut ModelContext<Self>) {
cx.subscribe(
&self.context_server_manager.clone(),