diff options
| author | JJ Liebig <jonathan.liebig@gmail.com> | 2026-09-13 21:14:00 +0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-13 19:14:00 +0200 |
| commit | 3834fd3d0f77a809cf3e394fca31fd036d3173dd (patch) | |
| tree | b24702d12d9b951a8bb6cbe2a4386ec3b3b42152 /src/client/shell/actions.rs | |
| parent | f0cb0e0683953e7dbc32d911268931f25d3e448f (diff) | |
fix: auto-expire worktree action error banners (#4063)
* fix: auto-expire worktree action error banners
refs #1827
* fix: restart endpoint error timeout on repeated errors
Route every transient client-side action error through a setter that installs a fresh deadline, so an identical repeated message cannot inherit an older, nearly-expired deadline.
refs #1827
* test: derive endpoint error expiry assertions from stored deadline
refs #1827
Diffstat (limited to 'src/client/shell/actions.rs')
| -rw-r--r-- | src/client/shell/actions.rs | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/client/shell/actions.rs b/src/client/shell/actions.rs index 7fb2b6ce..9190f5e4 100644 --- a/src/client/shell/actions.rs +++ b/src/client/shell/actions.rs @@ -192,9 +192,8 @@ impl ClientShellState { .then(|| candidate.command_id.clone()) }); let Some(command_id) = command_id else { - self.endpoint_error = Some( - "custom command is not available on this endpoint; reload configuration" - .to_owned(), + self.set_endpoint_error( + "custom command is not available on this endpoint; reload configuration", ); outcome.repaint = true; return; @@ -608,8 +607,7 @@ impl ClientShellState { (false, Vec::new()) } Ok(_) => { - self.endpoint_error = - Some("endpoint returned an unexpected selection result".to_owned()); + self.set_endpoint_error("endpoint returned an unexpected selection result"); (true, Vec::new()) } Err(_) => (true, Vec::new()), @@ -667,8 +665,7 @@ impl ClientShellState { (false, replay_action(replay)) } Ok(_) => { - self.endpoint_error = - Some("endpoint returned an unexpected link result".to_owned()); + self.set_endpoint_error("endpoint returned an unexpected link result"); (true, replay_action(replay)) } Err(error) @@ -706,8 +703,9 @@ impl ClientShellState { ), Ok(crate::api::schema::ResponseResult::PaneCopyMotion { .. }) => (false, false), Ok(_) => { - self.endpoint_error = - Some("endpoint returned an unexpected copy-motion result".to_owned()); + self.set_endpoint_error( + "endpoint returned an unexpected copy-motion result", + ); (true, false) } Err(_) => (true, false), @@ -761,8 +759,9 @@ impl ClientShellState { } Ok(_) => { self.cancel_deferred_copy_after_search(generation); - self.endpoint_error = - Some("endpoint returned an unexpected copy-search result".to_owned()); + self.set_endpoint_error( + "endpoint returned an unexpected copy-search result", + ); (true, false) } Err(_) => { @@ -777,8 +776,9 @@ impl ClientShellState { let repaint = match result { Ok(crate::api::schema::ResponseResult::ConfigReload { .. }) => false, Ok(_) => { - self.endpoint_error = - Some("endpoint returned an unexpected config reload result".to_owned()); + self.set_endpoint_error( + "endpoint returned an unexpected config reload result", + ); true } Err(_) => true, |
