@@ -2454,7 +2454,7 @@ impl AgentPanel {
&tv,
window,
|this, _view, event: &AcpThreadViewEvent, _window, cx| match event {
- AcpThreadViewEvent::MessageSentOrQueued => {
+ AcpThreadViewEvent::Interacted => {
let Some(thread_id) = this.active_thread_id(cx) else {
return;
};
@@ -2466,7 +2466,7 @@ impl AgentPanel {
this._draft_editor_observation = None;
}
this.retained_threads.remove(&thread_id);
- cx.emit(AgentPanelEvent::MessageSentOrQueued { thread_id });
+ cx.emit(AgentPanelEvent::ThreadInteracted { thread_id });
}
},
)
@@ -2762,7 +2762,7 @@ pub enum AgentPanelEvent {
ActiveViewChanged,
ThreadFocused,
RetainedThreadChanged,
- MessageSentOrQueued { thread_id: ThreadId },
+ ThreadInteracted { thread_id: ThreadId },
}
impl EventEmitter<PanelEvent> for AgentPanel {}
@@ -206,7 +206,7 @@ impl RenderOnce for GeneratingSpinnerElement {
}
pub enum AcpThreadViewEvent {
- MessageSentOrQueued,
+ Interacted,
}
impl EventEmitter<AcpThreadViewEvent> for ThreadView {}
@@ -954,7 +954,6 @@ impl ThreadView {
let has_queued = self.has_queued_messages();
if is_editor_empty && self.can_fast_track_queue && has_queued {
self.can_fast_track_queue = false;
- cx.emit(AcpThreadViewEvent::MessageSentOrQueued);
self.send_queued_message_at_index(0, true, window, cx);
return;
}
@@ -964,7 +963,7 @@ impl ThreadView {
}
if is_generating {
- cx.emit(AcpThreadViewEvent::MessageSentOrQueued);
+ cx.emit(AcpThreadViewEvent::Interacted);
self.queue_message(message_editor, window, cx);
return;
}
@@ -1006,7 +1005,7 @@ impl ThreadView {
}
}
- cx.emit(AcpThreadViewEvent::MessageSentOrQueued);
+ cx.emit(AcpThreadViewEvent::Interacted);
self.send_impl(message_editor, window, cx)
}
@@ -1209,6 +1208,8 @@ impl ThreadView {
return;
}
+ cx.emit(AcpThreadViewEvent::Interacted);
+
let message_editor = self.message_editor.clone();
if thread.read(cx).status() == ThreadStatus::Idle {
self.send_impl(message_editor, window, cx);
@@ -1371,6 +1372,7 @@ impl ThreadView {
}
let task = thread.update(cx, |thread, cx| thread.retry(cx));
+ cx.emit(AcpThreadViewEvent::Interacted);
self.sync_generating_indicator(cx);
cx.notify();
cx.spawn(async move |this, cx| {
@@ -1430,6 +1432,7 @@ impl ThreadView {
.update(cx, |thread, cx| thread.rewind(user_message_id, cx))
.await?;
this.update_in(cx, |thread, window, cx| {
+ cx.emit(AcpThreadViewEvent::Interacted);
thread.send_impl(message_editor, window, cx);
thread.focus_handle(cx).focus(window, cx);
})?;
@@ -1522,6 +1525,8 @@ impl ThreadView {
return;
};
+ cx.emit(AcpThreadViewEvent::Interacted);
+
self.message_editor.focus_handle(cx).focus(window, cx);
let content = queued.content;
@@ -1176,7 +1176,9 @@ impl ThreadMetadataStore {
.and_then(|t| t.created_at)
.unwrap_or_else(|| updated_at);
- let interacted_at = existing_thread.and_then(|t| t.interacted_at);
+ let interacted_at = existing_thread
+ .map(|t| t.interacted_at)
+ .unwrap_or(Some(updated_at));
let agent_id = thread_ref.connection().agent_id();
@@ -736,8 +736,8 @@ impl Sidebar {
this.sync_active_entry_from_panel(_agent_panel, cx);
this.update_entries(cx);
}
- AgentPanelEvent::MessageSentOrQueued { thread_id } => {
- this.record_thread_message_sent_or_queued(thread_id, cx);
+ AgentPanelEvent::ThreadInteracted { thread_id } => {
+ this.record_thread_interacted(thread_id, cx);
this.update_entries(cx);
}
},
@@ -3572,11 +3572,7 @@ impl Sidebar {
self.thread_last_accessed.insert(*id, Utc::now());
}
- fn record_thread_message_sent_or_queued(
- &mut self,
- thread_id: &agent_ui::ThreadId,
- cx: &mut App,
- ) {
+ fn record_thread_interacted(&mut self, thread_id: &agent_ui::ThreadId, cx: &mut App) {
let store = ThreadMetadataStore::global(cx);
store.update(cx, |store, cx| {
store.update_interacted_at(thread_id, Utc::now(), cx);