diff --git a/src/app.rs b/src/app.rs index fc16a92..a534132 100644 --- a/src/app.rs +++ b/src/app.rs @@ -31,6 +31,7 @@ pub struct App { reading_passphrase: bool, state_msg: Option, exit: bool, + exit_after_passphrase: bool, exit_mount_point: Option, print_on_exit: bool, runtime: Runtime, @@ -77,6 +78,7 @@ impl App { reading_passphrase: false, state_msg: None, exit: false, + exit_after_passphrase: false, exit_mount_point: None, print_on_exit: false, runtime, @@ -111,6 +113,10 @@ impl App { } } + if !self.exit { + return self.run(terminal); + } + Ok(()) } @@ -158,6 +164,10 @@ impl App { KeyCode::Enter => { self.reading_passphrase = false; self.mount()?; + if self.exit_after_passphrase { + self.exit = true; + self.exit_after_passphrase = false; + } } KeyCode::Backspace => { passphrase.pop(); @@ -296,6 +306,10 @@ impl App { Message::PassphraseRequired(idx) => { self.reading_passphrase = true; self.selected_device_index = idx; + if self.exit { + self.exit_after_passphrase = true; + } + self.exit = false; Ok(()) } } @@ -346,6 +360,7 @@ impl App { self.reading_passphrase = false; self.state_msg = None; self.exit = false; + self.exit_after_passphrase = false; self.exit_mount_point = None; self.print_on_exit = false; self.get_or_refresh_devices();