From a143fe34d0e1c263a6457ac66b91647258153513 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Wed, 3 Mar 2021 17:57:34 +0100 Subject: [PATCH] refactor(core): convert apps.lisk to layouts --- core/src/apps/lisk/layout.py | 81 +++++++++++++++++++++----------- core/src/trezor/ui/layouts/tt.py | 10 ++-- 2 files changed, 59 insertions(+), 32 deletions(-) diff --git a/core/src/apps/lisk/layout.py b/core/src/apps/lisk/layout.py index cb26efb62..90bca73bd 100644 --- a/core/src/apps/lisk/layout.py +++ b/core/src/apps/lisk/layout.py @@ -3,36 +3,50 @@ from ubinascii import hexlify from trezor import ui from trezor.enums import ButtonRequestType from trezor.strings import format_amount -from trezor.ui.components.tt.text import Text -from trezor.ui.layouts import show_pubkey +from trezor.ui.layouts import ( + confirm_metadata, + confirm_output, + confirm_total, + show_pubkey, +) from trezor.utils import chunks -from apps.common.confirm import require_confirm, require_hold_to_confirm -from apps.common.layout import split_address - from .helpers import get_vote_tx_text async def require_confirm_tx(ctx, to, value): - text = Text("Confirm sending", ui.ICON_SEND, ui.GREEN) - text.bold(format_coin_amount(value)) - text.normal("to") - text.mono(*split_address(to)) - await require_confirm(ctx, text, ButtonRequestType.SignTx) + await confirm_output( + ctx, + to, + format_coin_amount(value), + font_amount=ui.BOLD, + to_str="\nto\n", + br_code=ButtonRequestType.SignTx, + ) async def require_confirm_delegate_registration(ctx, delegate_name): - text = Text("Confirm transaction", ui.ICON_SEND, ui.GREEN) - text.normal("Do you really want to") - text.normal("register a delegate?") - text.bold(*chunks(delegate_name, 20)) - await require_confirm(ctx, text, ButtonRequestType.SignTx) + await confirm_metadata( + ctx, + "confirm_delegate", + title="Confirm transaction", + content="Do you really want to register a delegate?\n{}", + param="\n".join(chunks(delegate_name, 20)), + param_font=ui.BOLD, + hide_continue=True, + br_code=ButtonRequestType.SignTx, + ) async def require_confirm_vote_tx(ctx, votes): - text = Text("Confirm transaction", ui.ICON_SEND, ui.GREEN) - text.normal(*get_vote_tx_text(votes)) - await require_confirm(ctx, text, ButtonRequestType.SignTx) + await confirm_metadata( + ctx, + "confirm_vote", + title="Confirm transaction", + content="\n".join(get_vote_tx_text(votes)), + hide_continue=True, + br_code=ButtonRequestType.SignTx, + ) async def require_confirm_public_key(ctx, public_key): @@ -40,19 +54,30 @@ async def require_confirm_public_key(ctx, public_key): async def require_confirm_multisig(ctx, multisignature): - text = Text("Confirm transaction", ui.ICON_SEND, ui.GREEN) - text.normal("Keys group length: %s" % len(multisignature.keys_group)) - text.normal("Life time: %s" % multisignature.life_time) - text.normal("Min: %s" % multisignature.min) - await require_confirm(ctx, text, ButtonRequestType.SignTx) + content = "Keys group length: %s\nLife time: %s\nMin: %s" % ( + len(multisignature.keys_group), + multisignature.life_time, + multisignature.min, + ) + await confirm_metadata( + ctx, + "confirm_multisig", + title="Confirm transaction", + content=content, + hide_continue=True, + br_code=ButtonRequestType.SignTx, + ) async def require_confirm_fee(ctx, value, fee): - text = Text("Confirm transaction", ui.ICON_SEND, ui.GREEN) - text.bold(format_coin_amount(value)) - text.normal("fee:") - text.bold(format_coin_amount(fee)) - await require_hold_to_confirm(ctx, text, ButtonRequestType.ConfirmOutput) + await confirm_total( + ctx, + total_amount=format_coin_amount(value), + total_label="", + fee_amount=format_coin_amount(fee), + fee_label="\nfee:\n", + br_code=ButtonRequestType.ConfirmOutput, + ) def format_coin_amount(value): diff --git a/core/src/trezor/ui/layouts/tt.py b/core/src/trezor/ui/layouts/tt.py index fa82f7c1d..9edc52326 100644 --- a/core/src/trezor/ui/layouts/tt.py +++ b/core/src/trezor/ui/layouts/tt.py @@ -557,15 +557,14 @@ async def confirm_total( fee_label: str = "\nincluding fee:\n", icon_color: int = ui.GREEN, br_type: str = "confirm_total", + br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: text = Text(title, ui.ICON_SEND, icon_color, new_lines=False) text.normal(total_label) text.bold(total_amount) text.normal(fee_label) text.bold(fee_amount) - await raise_if_cancelled( - interact(ctx, HoldToConfirm(text), br_type, ButtonRequestType.SignTx) - ) + await raise_if_cancelled(interact(ctx, HoldToConfirm(text), br_type, br_code)) # TODO cleanup @ redesign @@ -624,11 +623,14 @@ async def confirm_metadata( br_code: ButtonRequestType = ButtonRequestType.SignTx, hide_continue: bool = False, hold: bool = False, + param_font: int = ui.BOLD, icon: str = ui.ICON_SEND, # TODO cleanup @ redesign icon_color: int = ui.GREEN, # TODO cleanup @ redesign ) -> None: text = Text(title, icon, icon_color, new_lines=False) - text.format_parametrized(content, param if param is not None else "") + text.format_parametrized( + content, param if param is not None else "", param_font=param_font + ) if not hide_continue: text.br()