diff options
Diffstat (limited to 'src/app')
| -rw-r--r-- | src/app/api.rs | 12 | ||||
| -rw-r--r-- | src/app/config_io.rs | 1 | ||||
| -rw-r--r-- | src/app/input/settings.rs | 8 |
3 files changed, 15 insertions, 6 deletions
diff --git a/src/app/api.rs b/src/app/api.rs index 46429ffe..1fb11118 100644 --- a/src/app/api.rs +++ b/src/app/api.rs @@ -84,11 +84,17 @@ impl App { if self.local_terminal_notifications && matches!( self.state.toast_config.delivery, - crate::config::ToastDelivery::Terminal + crate::config::ToastDelivery::Terminal | crate::config::ToastDelivery::System ) { + let notify = match self.state.toast_config.delivery { + crate::config::ToastDelivery::Terminal => crate::terminal_notify::show_notification, + crate::config::ToastDelivery::System => crate::platform::show_desktop_notification, + _ => unreachable!("toast delivery was checked above"), + }; + if let Some(version) = update_ready_version { - let _ = crate::terminal_notify::show_notification( + let _ = notify( &format!("v{version} available"), Some("detach, then run `herdr update`"), ); @@ -127,7 +133,7 @@ impl App { ToastKind::Finished => "finished", ToastKind::UpdateInstalled => "updated", }; - let _ = crate::terminal_notify::show_notification( + let _ = notify( &format!("{} {}", agent_label, event_text), Some(&crate::app::actions::notification_context( ws, diff --git a/src/app/config_io.rs b/src/app/config_io.rs index 0bf04831..36f44b9a 100644 --- a/src/app/config_io.rs +++ b/src/app/config_io.rs @@ -62,6 +62,7 @@ impl App { crate::config::ToastDelivery::Off => "\"off\"", crate::config::ToastDelivery::Herdr => "\"herdr\"", crate::config::ToastDelivery::Terminal => "\"terminal\"", + crate::config::ToastDelivery::System => "\"system\"", }; if self.update_config_file("toast setting", |content| { let content = diff --git a/src/app/input/settings.rs b/src/app/input/settings.rs index 9e89e515..79fdf5d8 100644 --- a/src/app/input/settings.rs +++ b/src/app/input/settings.rs @@ -51,6 +51,7 @@ fn toast_delivery_index(delivery: ToastDelivery) -> usize { ToastDelivery::Off => 0, ToastDelivery::Herdr => 1, ToastDelivery::Terminal => 2, + ToastDelivery::System => 3, } } @@ -58,7 +59,8 @@ fn toast_delivery_for_index(idx: usize) -> ToastDelivery { match idx { 0 => ToastDelivery::Off, 1 => ToastDelivery::Herdr, - _ => ToastDelivery::Terminal, + 2 => ToastDelivery::Terminal, + _ => ToastDelivery::System, } } @@ -151,7 +153,7 @@ pub(super) fn update_settings_state(state: &mut AppState, key: KeyEvent) -> Opti }, SettingsSection::Toast => match key.code { KeyCode::Up | KeyCode::Char('k') => state.settings.list.move_prev(), - KeyCode::Down | KeyCode::Char('j') => state.settings.list.move_next(3), + KeyCode::Down | KeyCode::Char('j') => state.settings.list.move_next(4), KeyCode::Enter | KeyCode::Char(' ') => { let delivery = toast_delivery_for_index(state.settings.list.selected); return Some(SettingsAction::SaveToastDelivery(delivery)); @@ -274,7 +276,7 @@ impl AppState { } SettingsSection::Toast => { let list_y = area.y + 3; - if row >= list_y && row < list_y + 6 { + if row >= list_y && row < list_y + 8 { Some(((row - list_y) / 2) as usize) } else { None |
