diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-17 00:17:34 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-17 00:18:14 +0300 |
| commit | 8d4cc05be0c696db2aabca7e9995e59019a01469 (patch) | |
| tree | ee9caf14c9b72c21574d599ff119b0f4533f3439 /src/app/actions.rs | |
| parent | 1342a76e60ff46c45dcceee689f6eed180eb0650 (diff) | |
feat: add homebrew update handling
refs #127
Diffstat (limited to 'src/app/actions.rs')
| -rw-r--r-- | src/app/actions.rs | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/app/actions.rs b/src/app/actions.rs index 870044a8..be8e1018 100644 --- a/src/app/actions.rs +++ b/src/app/actions.rs @@ -652,8 +652,12 @@ impl AppState { self.handle_pane_died(pane_id); Vec::new() } - AppEvent::UpdateReady { version } => { + AppEvent::UpdateReady { + version, + install_command, + } => { self.update_available = Some(version.clone()); + self.update_install_command = install_command.clone(); self.latest_release_notes_available = true; self.update_dismissed = true; if matches!( @@ -663,7 +667,7 @@ impl AppState { self.toast = Some(ToastNotification { kind: ToastKind::UpdateInstalled, title: format!("v{version} available"), - context: "detach, then run `herdr update`".to_string(), + context: format!("detach, then run `{install_command}`"), target: None, }); } @@ -953,6 +957,7 @@ mod tests { let updates = state.handle_app_event(crate::events::AppEvent::UpdateReady { version: "0.5.0".into(), + install_command: "herdr update".into(), }); assert!(updates.is_empty()); @@ -1500,6 +1505,7 @@ mod tests { let updates = state.handle_app_event(AppEvent::UpdateReady { version: "0.5.0".into(), + install_command: "herdr update".into(), }); assert!(updates.is_empty()); @@ -1513,6 +1519,27 @@ mod tests { } #[test] + fn update_ready_uses_event_install_command_in_toast() { + let mut state = AppState::test_new(); + state.toast_config.delivery = crate::config::ToastDelivery::Herdr; + + state.handle_app_event(AppEvent::UpdateReady { + version: "0.5.0".into(), + install_command: "brew update && brew upgrade herdr".into(), + }); + + assert_eq!( + state.update_install_command, + "brew update && brew upgrade herdr" + ); + let toast = state.toast.as_ref().expect("update toast"); + assert_eq!( + toast.context, + "detach, then run `brew update && brew upgrade herdr`" + ); + } + + #[test] fn toggle_fullscreen_works() { let mut state = app_with_workspaces(&["test"]); state.workspaces[0].test_split(Direction::Horizontal); |
