hcterm 0.7.0-dev.19

A terminal for Holochain
use crate::app::App;
use crossterm::event::{self, Event, KeyCode};

#[derive(Debug)]
pub enum ScreenEvent {
    Refresh,
    NavDown,
    NavUp,
}

pub fn handle_events(app: &mut App) -> anyhow::Result<()> {
    if event::poll(std::time::Duration::from_millis(50))? {
        if let Event::Key(key) = event::read()? {
            if key.kind == event::KeyEventKind::Press {
                if key.code == KeyCode::Tab {
                    app.incr_tab_index();
                } else if key.code == KeyCode::BackTab {
                    app.decr_tab_index();
                } else if key.code == KeyCode::Char('q') || key.code == KeyCode::Esc {
                    app.stop();
                } else if key.code == KeyCode::Char('r') {
                    app.push_event(ScreenEvent::Refresh);
                } else if key.code == KeyCode::Down {
                    app.push_event(ScreenEvent::NavDown)
                } else if key.code == KeyCode::Up {
                    app.push_event(ScreenEvent::NavUp)
                }
            }
        }
    }
    Ok(())
}