Reorganize main function

This commit is contained in:
Pierre HUBERT 2022-10-01 20:49:05 +02:00
parent 7a06feb7cf
commit 72af5df56f
4 changed files with 18 additions and 12 deletions

View File

@ -0,0 +1,3 @@
use std::time::Duration;
pub const TICK_RATE: Duration = Duration::from_millis(250);

View File

@ -1,3 +1,4 @@
pub mod cli_args;
pub mod constants;
pub mod server;
pub mod ui_screens;

View File

@ -1,8 +1,6 @@
use std::error::Error;
use std::io;
use std::time::Duration;
use cli_player::ui_screens::select_play_mode;
use crossterm::event::DisableMouseCapture;
use crossterm::event::EnableMouseCapture;
use crossterm::execute;
@ -10,9 +8,17 @@ use crossterm::terminal::EnterAlternateScreen;
use crossterm::terminal::LeaveAlternateScreen;
use crossterm::terminal::{disable_raw_mode, enable_raw_mode};
use env_logger::Env;
use tui::backend::CrosstermBackend;
use tui::backend::{Backend, CrosstermBackend};
use tui::Terminal;
use cli_player::server::start_server_if_missing;
use cli_player::ui_screens::select_play_mode;
async fn run_app<B: Backend>(terminal: &mut Terminal<B>) -> Result<(), Box<dyn Error>> {
let res = select_play_mode::select_play_mode(terminal)?;
println!("selected play mode: {:?}", res);
Ok(())
}
#[tokio::main]
pub async fn main() -> Result<(), Box<dyn Error>> {
@ -28,9 +34,7 @@ pub async fn main() -> Result<(), Box<dyn Error>> {
let mut terminal = Terminal::new(backend)?;
// create app and run it
let tick_rate = Duration::from_millis(250);
let res = select_play_mode::select_play_mode(&mut terminal, tick_rate);
let res = run_app(&mut terminal).await;
// restore terminal
disable_raw_mode()?;
@ -41,11 +45,9 @@ pub async fn main() -> Result<(), Box<dyn Error>> {
)?;
terminal.show_cursor()?;
if let Err(err) = &res {
if let Err(err) = res {
println!("{:?}", err)
}
println!("selected play mode: {:?}", res.unwrap());
Ok(())
}

View File

@ -1,6 +1,7 @@
use std::io;
use std::time::{Duration, Instant};
use crate::constants::TICK_RATE;
use crate::ui_screens::utils::centered_rect_size;
use crossterm::event;
use crossterm::event::{Event, KeyCode};
@ -47,7 +48,6 @@ struct SelectPlayModeScreen {
pub fn select_play_mode<B: Backend>(
terminal: &mut Terminal<B>,
tick_rate: Duration,
) -> io::Result<SelectPlayModeResult> {
let mut model = SelectPlayModeScreen::default();
@ -56,7 +56,7 @@ pub fn select_play_mode<B: Backend>(
model.state.select(Some(model.curr_selection));
terminal.draw(|f| ui(f, &mut model))?;
let timeout = tick_rate
let timeout = TICK_RATE
.checked_sub(last_tick.elapsed())
.unwrap_or_else(|| Duration::from_secs(0));
@ -73,7 +73,7 @@ pub fn select_play_mode<B: Backend>(
model.curr_selection %= AVAILABLE_PLAY_MODES.len();
}
}
if last_tick.elapsed() >= tick_rate {
if last_tick.elapsed() >= TICK_RATE {
last_tick = Instant::now();
}
}