From 0ae682ef8bb106a87325e268612a8b56694103e7 Mon Sep 17 00:00:00 2001 From: Jan-Bulthuis Date: Fri, 21 Feb 2025 20:49:38 +0100 Subject: [PATCH] Made exit indirect and added timeout after successfull login --- src/main.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 94f48af..4a59177 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,7 +29,7 @@ fn main() -> io::Result<()> { } struct App { start_time: Instant, - exit: bool, + exit_time: Option, error: bool, focus: Focus, status: Status, @@ -123,7 +123,7 @@ impl Display for Session { impl Default for App { fn default() -> Self { let start_time = Instant::now(); - let exit = false; + let exit_time = None; let error = false; let focus = Focus::User; let status = Status::Nothing; @@ -141,7 +141,7 @@ impl Default for App { Self { start_time, - exit, + exit_time, error, focus, status, @@ -155,7 +155,10 @@ impl Default for App { impl App { pub fn run(&mut self, terminal: &mut DefaultTerminal) -> io::Result<()> { 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))?; self.handle_events()?; } @@ -307,7 +310,7 @@ impl App { } fn exit(&mut self) { - self.exit = true; + self.exit_time = Some(Instant::now()); } fn submit(&mut self) { @@ -326,7 +329,7 @@ impl App { LoginResult::Success => { self.error = false; self.status = Status::Success; - self.exit = true; + self.exit_time = Some(Instant::now() + Duration::from_millis(300)); } LoginResult::Failure => { self.error = true;