aboutsummaryrefslogtreecommitdiff
path: root/src/app/api.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-26 21:52:19 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-26 21:53:50 +0300
commit427c2606d8f62558e3949d2f44173175e96bed49 (patch)
tree0d351c30c3132037beb75ea20c378d75e6b34c80 /src/app/api.rs
parent31e973502af205666cb4a48e3f9e10328f65cd4e (diff)
fix: deliver agent status subscriptions from event hub
Diffstat (limited to 'src/app/api.rs')
-rw-r--r--src/app/api.rs19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/app/api.rs b/src/app/api.rs
index 6319bdb6..a69dccec 100644
--- a/src/app/api.rs
+++ b/src/app/api.rs
@@ -227,16 +227,18 @@ impl App {
});
}
- if update.previous_state != update.state
+ let previous_agent_status = pane_agent_status(update.previous_state, update.previous_seen);
+ let agent_status = self
+ .state
+ .workspaces
+ .get(update.ws_idx)
+ .and_then(|ws| ws.pane_state(update.pane_id))
+ .map(|pane| pane_agent_status(update.state, pane.seen))
+ .unwrap_or_else(|| pane_agent_status(update.state, update.seen));
+
+ if previous_agent_status != agent_status
|| update.previous_presentation != update.presentation
{
- let agent_status = self
- .state
- .workspaces
- .get(update.ws_idx)
- .and_then(|ws| ws.pane_state(update.pane_id))
- .map(|pane| pane_agent_status(update.state, pane.seen))
- .unwrap_or_else(|| pane_agent_status(update.state, true));
let presentation = update.presentation.clone();
self.emit_event(crate::api::schema::EventEnvelope {
event: crate::api::schema::EventKind::PaneAgentStatusChanged,
@@ -244,6 +246,7 @@ impl App {
pane_id,
workspace_id,
agent_status,
+ agent: update.agent_label.clone(),
title: presentation.title,
display_agent: presentation.display_agent,
custom_status: presentation.custom_status,