use crate::tui::app::App;
use crate::tui::ui;
use crossterm::event::{self, Event, KeyCode};
use ratatui::{backend::Backend, Terminal};
use std::{io, time::Duration};
pub fn run_app<B: Backend>(terminal: &mut Terminal<B>, mut app: App) -> io::Result<()> {
loop {
terminal.draw(|f| ui::draw(f, &mut app))?;
if crossterm::event::poll(Duration::from_millis(250))? {
if let Event::Key(key) = event::read()? {
match key.code {
KeyCode::Char('q') | KeyCode::Esc => return Ok(()),
KeyCode::Left | KeyCode::Char('h') => app.previous_tab(),
KeyCode::Right | KeyCode::Char('l') => app.next_tab(),
KeyCode::Down | KeyCode::Char('j') => app.scroll_down(),
KeyCode::Up | KeyCode::Char('k') => app.scroll_up(),
_ => {}
}
}
}
if app.should_quit {
return Ok(());
}
}
}