diff options
Diffstat (limited to 'src/app')
| -rw-r--r-- | src/app/mod.rs | 18 | ||||
| -rw-r--r-- | src/app/state.rs | 4 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs index ad704460..d02f68d6 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -9,7 +9,7 @@ mod input; pub mod state; use std::io; -use std::time::Duration; +use std::time::{Duration, Instant}; use crossterm::event::{self, Event, KeyEventKind}; use ratatui::layout::Rect; @@ -29,10 +29,11 @@ pub struct App { pub event_tx: mpsc::Sender<AppEvent>, event_rx: mpsc::Receiver<AppEvent>, no_session: bool, + config_diagnostic_deadline: Option<Instant>, } impl App { - pub fn new(config: &Config, no_session: bool) -> Self { + pub fn new(config: &Config, no_session: bool, config_diagnostic: Option<String>) -> Self { let (prefix_code, prefix_mods) = config.prefix_key(); let (event_tx, event_rx) = mpsc::channel::<AppEvent>(64); @@ -79,6 +80,7 @@ impl App { context_menu: None, update_available: None, update_dismissed: false, + config_diagnostic, prefix_code, prefix_mods, sidebar_width: config.ui.sidebar_width, @@ -96,6 +98,10 @@ impl App { } Self { + config_diagnostic_deadline: state + .config_diagnostic + .as_ref() + .map(|_| Instant::now() + Duration::from_secs(8)), state, event_tx, event_rx, @@ -105,6 +111,14 @@ impl App { pub async fn run(&mut self, terminal: &mut DefaultTerminal) -> io::Result<()> { while !self.state.should_quit { + if self + .config_diagnostic_deadline + .is_some_and(|deadline| Instant::now() >= deadline) + { + self.config_diagnostic_deadline = None; + self.state.config_diagnostic = None; + } + terminal.draw(|frame| { crate::ui::compute_view(&mut self.state, frame.area()); crate::ui::render(&self.state, frame); diff --git a/src/app/state.rs b/src/app/state.rs index 140a1513..8ee5e67a 100644 --- a/src/app/state.rs +++ b/src/app/state.rs @@ -58,9 +58,10 @@ pub struct AppState { pub(crate) drag: Option<DragState>, pub selection: Option<Selection>, pub context_menu: Option<ContextMenuState>, - // Update notification + // Notifications pub update_available: Option<String>, pub update_dismissed: bool, + pub config_diagnostic: Option<String>, // Config pub prefix_code: KeyCode, pub prefix_mods: KeyModifiers, @@ -132,6 +133,7 @@ impl AppState { context_menu: None, update_available: None, update_dismissed: false, + config_diagnostic: None, prefix_code: KeyCode::Char('b'), prefix_mods: KeyModifiers::CONTROL, sidebar_width: 26, |
