mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-08 15:28:44 +00:00
Merge pull request #532 from PR0M3TH3AN/codex/enable-real-time-stats-updates-during-sync
Enable live sync stats display
This commit is contained in:
41
src/main.py
41
src/main.py
@@ -232,12 +232,39 @@ def handle_display_npub(password_manager: PasswordManager):
|
|||||||
print(colored(f"Error: Failed to display npub: {e}", "red"))
|
print(colored(f"Error: Failed to display npub: {e}", "red"))
|
||||||
|
|
||||||
|
|
||||||
|
def _display_live_stats(
|
||||||
|
password_manager: PasswordManager, interval: float = 1.0
|
||||||
|
) -> None:
|
||||||
|
"""Continuously refresh stats until the user presses Enter."""
|
||||||
|
|
||||||
|
display_fn = getattr(password_manager, "display_stats", None)
|
||||||
|
if not callable(display_fn):
|
||||||
|
return
|
||||||
|
|
||||||
|
if not sys.stdin or not sys.stdin.isatty():
|
||||||
|
clear_screen()
|
||||||
|
display_fn()
|
||||||
|
return
|
||||||
|
|
||||||
|
while True:
|
||||||
|
clear_screen()
|
||||||
|
display_fn()
|
||||||
|
sys.stdout.flush()
|
||||||
|
try:
|
||||||
|
user_input = timed_input("", interval)
|
||||||
|
if user_input.strip() == "" or user_input.strip().lower() == "b":
|
||||||
|
break
|
||||||
|
except TimeoutError:
|
||||||
|
pass
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print()
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
def handle_display_stats(password_manager: PasswordManager) -> None:
|
def handle_display_stats(password_manager: PasswordManager) -> None:
|
||||||
"""Print seed profile statistics."""
|
"""Print seed profile statistics with live updates."""
|
||||||
try:
|
try:
|
||||||
display_fn = getattr(password_manager, "display_stats", None)
|
_display_live_stats(password_manager)
|
||||||
if callable(display_fn):
|
|
||||||
display_fn()
|
|
||||||
except Exception as e: # pragma: no cover - display best effort
|
except Exception as e: # pragma: no cover - display best effort
|
||||||
logging.error(f"Failed to display stats: {e}", exc_info=True)
|
logging.error(f"Failed to display stats: {e}", exc_info=True)
|
||||||
print(colored(f"Error: Failed to display stats: {e}", "red"))
|
print(colored(f"Error: Failed to display stats: {e}", "red"))
|
||||||
@@ -837,7 +864,6 @@ def handle_settings(password_manager: PasswordManager) -> None:
|
|||||||
pause()
|
pause()
|
||||||
elif choice == "14":
|
elif choice == "14":
|
||||||
handle_display_stats(password_manager)
|
handle_display_stats(password_manager)
|
||||||
pause()
|
|
||||||
elif choice == "15":
|
elif choice == "15":
|
||||||
handle_toggle_secret_mode(password_manager)
|
handle_toggle_secret_mode(password_manager)
|
||||||
pause()
|
pause()
|
||||||
@@ -872,12 +898,9 @@ def display_menu(
|
|||||||
7. Settings
|
7. Settings
|
||||||
8. List Archived
|
8. List Archived
|
||||||
"""
|
"""
|
||||||
display_fn = getattr(password_manager, "display_stats", None)
|
|
||||||
if callable(display_fn):
|
|
||||||
display_fn()
|
|
||||||
pause()
|
|
||||||
password_manager.start_background_sync()
|
password_manager.start_background_sync()
|
||||||
getattr(password_manager, "start_background_relay_check", lambda: None)()
|
getattr(password_manager, "start_background_relay_check", lambda: None)()
|
||||||
|
_display_live_stats(password_manager)
|
||||||
while True:
|
while True:
|
||||||
fp, parent_fp, child_fp = getattr(
|
fp, parent_fp, child_fp = getattr(
|
||||||
password_manager,
|
password_manager,
|
||||||
|
Reference in New Issue
Block a user