You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-firmware/core/src/trezor/pin.py

45 lines
1.2 KiB

from typing import Any
from trezor import utils
_previous_progress: int | None = None
_previous_seconds: int | None = None
keepalive_callback: Any = None
def show_pin_timeout(seconds: int, progress: int, message: str) -> bool:
from trezor import ui
global _previous_progress
global _previous_seconds
if callable(keepalive_callback):
keepalive_callback()
if progress == 0:
if progress != _previous_progress:
# avoid overdraw in case of repeated progress calls
ui.display.clear()
_previous_seconds = None
ui.display.text_center(ui.WIDTH // 2, 37, message, ui.BOLD, ui.FG, ui.BG)
if not utils.DISABLE_ANIMATION:
ui.display.loader(progress, False, 0, ui.FG, ui.BG)
if seconds != _previous_seconds:
if seconds == 0:
remaining = "Done"
elif seconds == 1:
remaining = "1 second left"
else:
remaining = f"{seconds} seconds left"
ui.display.bar(0, ui.HEIGHT - 42, ui.WIDTH, 25, ui.BG)
ui.display.text_center(
ui.WIDTH // 2, ui.HEIGHT - 22, remaining, ui.BOLD, ui.FG, ui.BG
)
_previous_seconds = seconds
ui.refresh()
_previous_progress = progress
return False