diff --git a/src/main.py b/src/main.py index 5b2878a..b4f796d 100644 --- a/src/main.py +++ b/src/main.py @@ -27,6 +27,7 @@ from utils import ( pause, clear_and_print_fingerprint, ) +import queue from local_bip85.bip85 import Bip85Error @@ -100,6 +101,22 @@ def confirm_action(prompt: str) -> bool: print(colored("Please enter 'Y' or 'N'.", "red")) +def drain_notifications(pm: PasswordManager) -> None: + """Display all queued notifications.""" + queue_obj = getattr(pm, "notifications", None) + if queue_obj is None: + return + while True: + try: + note = queue_obj.get_nowait() + except queue.Empty: + break + category = note.level.lower() + if category not in ("info", "warning", "error"): + category = "info" + print(color_text(note.message, category)) + + def handle_switch_fingerprint(password_manager: PasswordManager): """ Handles switching the active fingerprint. @@ -932,6 +949,7 @@ def display_menu( for handler in logging.getLogger().handlers: handler.flush() print(color_text(menu, "menu")) + drain_notifications(password_manager) try: choice = timed_input( "Enter your choice (1-8) or press Enter to exit: ", diff --git a/src/utils/color_scheme.py b/src/utils/color_scheme.py index db6798f..b0212c2 100644 --- a/src/utils/color_scheme.py +++ b/src/utils/color_scheme.py @@ -20,6 +20,9 @@ _COLOR_MAP = { "index": "yellow", "menu": "cyan", "stats": "green", + "info": "cyan", + "warning": "yellow", + "error": "red", "default": "white", }