forked from Roflin/gamenight
Started working on a cli frontend.
This commit is contained in:
35
gamenight-cli/src/flows/main.rs
Normal file
35
gamenight-cli/src/flows/main.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
use super::{abort::Abort, list_gamenights::ListGamenights, login::Login, main_menu::MainMenu, *};
|
||||
|
||||
|
||||
pub struct Main {
|
||||
login: Box<dyn for<'a> Flow<'a>>,
|
||||
main_menu: MainMenu
|
||||
}
|
||||
|
||||
impl Main {
|
||||
pub fn new() -> Self {
|
||||
let mut main_menu = MainMenu::new();
|
||||
main_menu.menu.push(Box::new(ListGamenights::new()));
|
||||
main_menu.menu.push(Box::new(Abort::new()));
|
||||
Self {
|
||||
login: Box::new(Login::new()),
|
||||
main_menu: main_menu
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl<'a> Flow<'a> for Main {
|
||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||
let (_outcome, state) = self.login.run(state).await?;
|
||||
let (_outcome, state) = self.main_menu.run(state).await?;
|
||||
Ok((FlowOutcome::Successful, state))
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for Main {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "main")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user