diff options
| author | pablu <me@pablu.de> | 2026-06-03 15:07:44 +0200 |
|---|---|---|
| committer | pablu <me@pablu.de> | 2026-06-03 15:07:44 +0200 |
| commit | 282871b88f2414de492e97a88636551094ee04cb (patch) | |
| tree | e4f383dfa133b65c6132b758b652e8f949ae7689 /src/main.rs | |
| parent | eaa1b915da8480bf3a86960c94f3667f386aa0f4 (diff) | |
update event hirarchy, update available packages to not lag anymore
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/main.rs b/src/main.rs index 3f48139..971a882 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,7 +16,7 @@ use clap::command; use ratatui::{ Terminal, crossterm::{ - event::poll, + event::{self, Event, poll}, execute, terminal::{EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode}, }, @@ -60,19 +60,28 @@ fn main() -> color_eyre::Result<()> { fn run(mut terminal: Terminal<CrosstermBackend<Stdout>>, app: &mut App) -> color_eyre::Result<()> { loop { - app.poll_available_packages(); - terminal.draw(|frame| app.draw(frame))?; + let mut events = vec![]; + + if let Some(event) = app.poll_available_packages() { + events.push(event); + } + if poll(Duration::from_millis(50))? { - let should_exit = app.update()?; + if let Ok(Event::Key(key)) = event::read() { + events.push(crate::signal::Event::KeyEvent(key)); + } + } + + for event in events { + // Process different event types in order + let should_exit = app.update(event)?; if should_exit { - break; + return Ok(()); } } } - - Ok(()) } fn init_tui() -> io::Result<ratatui::Terminal<CrosstermBackend<Stdout>>> { |
