From 818a07de3df9383fd4d5e66c316472ab3e3308f0 Mon Sep 17 00:00:00 2001 From: Bennet Bo Fenner Date: Thu, 19 Mar 2026 13:46:24 +0100 Subject: [PATCH] agent_ui: Remove unnecessary spawn in thread archive (#51931) ## Context Unused after #51930 ## Self-Review Checklist - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A --- crates/agent_ui/src/threads_archive_view.rs | 76 +++++++++------------ 1 file changed, 34 insertions(+), 42 deletions(-) diff --git a/crates/agent_ui/src/threads_archive_view.rs b/crates/agent_ui/src/threads_archive_view.rs index a7faaeca90623edc76a036ca947d2362b0020a33..06146a32f6b57de3c47bff7fae4b4b0f793d7b9f 100644 --- a/crates/agent_ui/src/threads_archive_view.rs +++ b/crates/agent_ui/src/threads_archive_view.rs @@ -135,7 +135,6 @@ pub struct ThreadsArchiveView { _subscriptions: Vec, selected_agent_menu: PopoverMenuHandle, _refresh_history_task: Task<()>, - _update_items_task: Option>, is_loading: bool, } @@ -180,7 +179,6 @@ impl ThreadsArchiveView { _subscriptions: vec![filter_editor_subscription], selected_agent_menu: PopoverMenuHandle::default(), _refresh_history_task: Task::ready(()), - _update_items_task: None, is_loading: true, }; this.set_selected_agent(Agent::NativeAgent, window, cx); @@ -243,50 +241,44 @@ impl ThreadsArchiveView { let query = self.filter_editor.read(cx).text(cx).to_lowercase(); let today = Local::now().naive_local().date(); - self._update_items_task.take(); - self._update_items_task = Some(cx.spawn(async move |this, cx| { - let mut items = Vec::with_capacity(sessions.len() + 5); - let mut current_bucket: Option = None; - - for session in sessions { - let highlight_positions = if !query.is_empty() { - let title = session.title.as_ref().map(|t| t.as_ref()).unwrap_or(""); - match fuzzy_match_positions(&query, title) { - Some(positions) => positions, - None => continue, - } - } else { - Vec::new() - }; - - let entry_bucket = session - .updated_at - .map(|timestamp| { - let entry_date = timestamp.with_timezone(&Local).naive_local().date(); - TimeBucket::from_dates(today, entry_date) - }) - .unwrap_or(TimeBucket::Older); + let mut items = Vec::with_capacity(sessions.len() + 5); + let mut current_bucket: Option = None; - if Some(entry_bucket) != current_bucket { - current_bucket = Some(entry_bucket); - items.push(ArchiveListItem::BucketSeparator(entry_bucket)); + for session in sessions { + let highlight_positions = if !query.is_empty() { + let title = session.title.as_ref().map(|t| t.as_ref()).unwrap_or(""); + match fuzzy_match_positions(&query, title) { + Some(positions) => positions, + None => continue, } - - items.push(ArchiveListItem::Entry { - session, - highlight_positions, - }); + } else { + Vec::new() + }; + + let entry_bucket = session + .updated_at + .map(|timestamp| { + let entry_date = timestamp.with_timezone(&Local).naive_local().date(); + TimeBucket::from_dates(today, entry_date) + }) + .unwrap_or(TimeBucket::Older); + + if Some(entry_bucket) != current_bucket { + current_bucket = Some(entry_bucket); + items.push(ArchiveListItem::BucketSeparator(entry_bucket)); } - this.update(cx, |this, cx| { - this.list_state.reset(items.len()); - this.items = items; - this.selection = None; - this.hovered_index = None; - cx.notify(); - }) - .ok(); - })); + items.push(ArchiveListItem::Entry { + session, + highlight_positions, + }); + } + + self.list_state.reset(items.len()); + self.items = items; + self.selection = None; + self.hovered_index = None; + cx.notify(); } fn reset_filter_editor_text(&mut self, window: &mut Window, cx: &mut Context) {