diff --git a/hive-c0re/src/actions.rs b/hive-c0re/src/actions.rs index 9b573ec6..0364d8ed 100644 --- a/hive-c0re/src/actions.rs +++ b/hive-c0re/src/actions.rs @@ -116,7 +116,11 @@ pub async fn approve(coord: Arc, id: i64) -> Result<()> { // at the scheduled time). Run inline + fire // `ApprovalResolved` so the approval row leaves Pending // immediately. - run_approval_schedule_prompt(&coord, approval).await + let result = run_approval_schedule_prompt(&coord, approval).await; + if result.is_ok() { + coord.emit_schedules_snapshot(); + } + result } } } diff --git a/hive-c0re/src/manager_server.rs b/hive-c0re/src/manager_server.rs index ff26c197..27a31d4d 100644 --- a/hive-c0re/src/manager_server.rs +++ b/hive-c0re/src/manager_server.rs @@ -610,7 +610,10 @@ fn handle_cancel_schedule( .map_err(|e| format!("cancel all: {e:#}")), }; match result { - Ok(()) => ManagerResponse::Ok, + Ok(()) => { + coord.emit_schedules_snapshot(); + ManagerResponse::Ok + } Err(message) => ManagerResponse::Err { message }, } } @@ -647,7 +650,10 @@ async fn handle_fire_schedule_now( }; } match crate::scheduled_prompts_worker::fire_now(coord, schedule_id).await { - Ok(_report) => ManagerResponse::Ok, + Ok(_report) => { + coord.emit_schedules_snapshot(); + ManagerResponse::Ok + } Err(e) => ManagerResponse::Err { message: format!("fire schedule {schedule_id} now: {e:#}"), }, @@ -709,7 +715,10 @@ fn handle_edit_schedule( targets_remove, }; match coord.scheduled_prompts.update(schedule_id, patch) { - Ok(()) => ManagerResponse::Ok, + Ok(()) => { + coord.emit_schedules_snapshot(); + ManagerResponse::Ok + } Err(e) => ManagerResponse::Err { message: format!("edit schedule {schedule_id}: {e:#}"), },