Merge pull request #303 from PR0M3TH3AN/codex/fix-premature-screen-wipe-during-entry-add

Improve TUI interaction timing
This commit is contained in:
thePR0M3TH3AN
2025-07-05 22:32:43 -04:00
committed by GitHub
3 changed files with 15 additions and 0 deletions

View File

@@ -188,6 +188,13 @@ class PasswordManager:
self.locked = False self.locked = False
self.update_activity() self.update_activity()
def pause(self, prompt: str = "Press Enter to continue...") -> None:
"""Wait for the user to press Enter before proceeding."""
try:
input(colored(prompt, "cyan"))
except (EOFError, KeyboardInterrupt):
print()
def initialize_fingerprint_manager(self): def initialize_fingerprint_manager(self):
""" """
Initializes the FingerprintManager. Initializes the FingerprintManager.
@@ -936,6 +943,7 @@ class PasswordManager:
f"Failed to post updated index to Nostr: {nostr_error}", f"Failed to post updated index to Nostr: {nostr_error}",
exc_info=True, exc_info=True,
) )
self.pause()
except Exception as e: except Exception as e:
logging.error(f"Error during password generation: {e}", exc_info=True) logging.error(f"Error during password generation: {e}", exc_info=True)
@@ -1027,6 +1035,7 @@ class PasswordManager:
f"Failed to post updated index to Nostr: {nostr_error}", f"Failed to post updated index to Nostr: {nostr_error}",
exc_info=True, exc_info=True,
) )
self.pause()
break break
except ValueError as err: except ValueError as err:
print(colored(f"Error: {err}", "red")) print(colored(f"Error: {err}", "red"))
@@ -1073,6 +1082,7 @@ class PasswordManager:
f"Failed to post updated index to Nostr: {nostr_error}", f"Failed to post updated index to Nostr: {nostr_error}",
exc_info=True, exc_info=True,
) )
self.pause()
except Exception as e: except Exception as e:
logging.error(f"Error during SSH key setup: {e}", exc_info=True) logging.error(f"Error during SSH key setup: {e}", exc_info=True)
print(colored(f"Error: Failed to add SSH key: {e}", "red")) print(colored(f"Error: Failed to add SSH key: {e}", "red"))
@@ -1119,6 +1129,7 @@ class PasswordManager:
f"Failed to post updated index to Nostr: {nostr_error}", f"Failed to post updated index to Nostr: {nostr_error}",
exc_info=True, exc_info=True,
) )
self.pause()
except Exception as e: except Exception as e:
logging.error(f"Error during seed phrase setup: {e}", exc_info=True) logging.error(f"Error during seed phrase setup: {e}", exc_info=True)
print(colored(f"Error: Failed to add seed phrase: {e}", "red")) print(colored(f"Error: Failed to add seed phrase: {e}", "red"))
@@ -1169,6 +1180,7 @@ class PasswordManager:
f"Failed to post updated index to Nostr: {nostr_error}", f"Failed to post updated index to Nostr: {nostr_error}",
exc_info=True, exc_info=True,
) )
self.pause()
except Exception as e: except Exception as e:
logging.error(f"Error during PGP key setup: {e}", exc_info=True) logging.error(f"Error during PGP key setup: {e}", exc_info=True)
print(colored(f"Error: Failed to add PGP key: {e}", "red")) print(colored(f"Error: Failed to add PGP key: {e}", "red"))
@@ -1210,6 +1222,7 @@ class PasswordManager:
f"Failed to post updated index to Nostr: {nostr_error}", f"Failed to post updated index to Nostr: {nostr_error}",
exc_info=True, exc_info=True,
) )
self.pause()
except Exception as e: except Exception as e:
logging.error(f"Error during Nostr key setup: {e}", exc_info=True) logging.error(f"Error during Nostr key setup: {e}", exc_info=True)
print(colored(f"Error: Failed to add Nostr key: {e}", "red")) print(colored(f"Error: Failed to add Nostr key: {e}", "red"))

View File

@@ -51,6 +51,7 @@ def test_handle_add_totp(monkeypatch, capsys):
) )
monkeypatch.setattr("builtins.input", lambda *args, **kwargs: next(inputs)) monkeypatch.setattr("builtins.input", lambda *args, **kwargs: next(inputs))
monkeypatch.setattr(pm, "sync_vault", lambda: None) monkeypatch.setattr(pm, "sync_vault", lambda: None)
monkeypatch.setattr(pm, "pause", lambda *a, **k: None)
pm.handle_add_totp() pm.handle_add_totp()
out = capsys.readouterr().out out = capsys.readouterr().out

View File

@@ -66,6 +66,7 @@ def test_manager_workflow(monkeypatch):
] ]
) )
monkeypatch.setattr("builtins.input", lambda *args, **kwargs: next(inputs)) monkeypatch.setattr("builtins.input", lambda *args, **kwargs: next(inputs))
monkeypatch.setattr(pm, "pause", lambda *a, **k: None)
pm.handle_add_password() pm.handle_add_password()
assert pm.is_dirty is False assert pm.is_dirty is False