Made exit indirect and added timeout after successfull login

This commit is contained in:
Jan-Bulthuis 2025-02-21 20:49:38 +01:00
parent d94aa35576
commit 0ae682ef8b
1 changed files with 9 additions and 6 deletions

View File

@ -29,7 +29,7 @@ fn main() -> io::Result<()> {
} }
struct App { struct App {
start_time: Instant, start_time: Instant,
exit: bool, exit_time: Option<Instant>,
error: bool, error: bool,
focus: Focus, focus: Focus,
status: Status, status: Status,
@ -123,7 +123,7 @@ impl Display for Session {
impl Default for App { impl Default for App {
fn default() -> Self { fn default() -> Self {
let start_time = Instant::now(); let start_time = Instant::now();
let exit = false; let exit_time = None;
let error = false; let error = false;
let focus = Focus::User; let focus = Focus::User;
let status = Status::Nothing; let status = Status::Nothing;
@ -141,7 +141,7 @@ impl Default for App {
Self { Self {
start_time, start_time,
exit, exit_time,
error, error,
focus, focus,
status, status,
@ -155,7 +155,10 @@ impl Default for App {
impl App { impl App {
pub fn run(&mut self, terminal: &mut DefaultTerminal) -> io::Result<()> { pub fn run(&mut self, terminal: &mut DefaultTerminal) -> io::Result<()> {
self.start_time = Instant::now(); self.start_time = Instant::now();
while !self.exit { while match self.exit_time {
Some(exit_time) => Instant::now() < exit_time,
None => true,
} {
terminal.draw(|frame| self.draw(frame))?; terminal.draw(|frame| self.draw(frame))?;
self.handle_events()?; self.handle_events()?;
} }
@ -307,7 +310,7 @@ impl App {
} }
fn exit(&mut self) { fn exit(&mut self) {
self.exit = true; self.exit_time = Some(Instant::now());
} }
fn submit(&mut self) { fn submit(&mut self) {
@ -326,7 +329,7 @@ impl App {
LoginResult::Success => { LoginResult::Success => {
self.error = false; self.error = false;
self.status = Status::Success; self.status = Status::Success;
self.exit = true; self.exit_time = Some(Instant::now() + Duration::from_millis(300));
} }
LoginResult::Failure => { LoginResult::Failure => {
self.error = true; self.error = true;