refactor(examples): use crossterm event methods (#1792)

Crossterm 0.29 introduced methods to easily check / extract the event
type. E.g. as_key_press_event() and is_key_press(). This commit
updates the examples to use these methods instead of matching on
the event type. This makes the code cleaner and easier to read.

Also does a general cleanup of the event handling code in the examples.
This commit is contained in:
Josh McKinney
2025-05-10 10:35:12 -07:00
committed by GitHub
parent 1874b9dd55
commit 8d60e96b2b
45 changed files with 382 additions and 416 deletions

View File

@@ -31,7 +31,7 @@ use std::sync::{Arc, RwLock};
use std::time::Duration;
use color_eyre::Result;
use crossterm::event::{Event, EventStream, KeyCode, KeyEventKind};
use crossterm::event::{Event, EventStream, KeyCode};
use octocrab::params::pulls::Sort;
use octocrab::params::Direction;
use octocrab::Page;
@@ -70,14 +70,14 @@ impl App {
while !self.should_quit {
tokio::select! {
_ = interval.tick() => { terminal.draw(|frame| self.draw(frame))?; },
_ = interval.tick() => { terminal.draw(|frame| self.render(frame))?; },
Some(Ok(event)) = events.next() => self.handle_event(&event),
}
}
Ok(())
}
fn draw(&self, frame: &mut Frame) {
fn render(&self, frame: &mut Frame) {
let vertical = Layout::vertical([Constraint::Length(1), Constraint::Fill(1)]);
let [title_area, body_area] = vertical.areas(frame.area());
let title = Line::from("Ratatui async example").centered().bold();
@@ -86,14 +86,12 @@ impl App {
}
fn handle_event(&mut self, event: &Event) {
if let Event::Key(key) = event {
if key.kind == KeyEventKind::Press {
match key.code {
KeyCode::Char('q') | KeyCode::Esc => self.should_quit = true,
KeyCode::Char('j') | KeyCode::Down => self.pull_requests.scroll_down(),
KeyCode::Char('k') | KeyCode::Up => self.pull_requests.scroll_up(),
_ => {}
}
if let Some(key) = event.as_key_press_event() {
match key.code {
KeyCode::Char('q') | KeyCode::Esc => self.should_quit = true,
KeyCode::Char('j') | KeyCode::Down => self.pull_requests.scroll_down(),
KeyCode::Char('k') | KeyCode::Up => self.pull_requests.scroll_up(),
_ => {}
}
}
}