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/apps/binance/layout.py

85 lines
2.6 KiB

from trezor import ui
from trezor.messages import (
BinanceCancelMsg,
BinanceInputOutput,
BinanceOrderMsg,
BinanceOrderSide,
BinanceTransferMsg,
ButtonRequestType,
)
from trezor.strings import format_amount
from trezor.ui.scroll import Paginated
from trezor.ui.text import Text
from apps.common.confirm import require_hold_to_confirm
from apps.common.layout import split_address
from . import helpers
async def require_confirm_transfer(ctx, msg: BinanceTransferMsg):
def make_input_output_pages(msg: BinanceInputOutput, direction):
pages = []
for coin in msg.coins:
coin_page = Text("Confirm " + direction, ui.ICON_SEND, icon_color=ui.GREEN)
coin_page.bold(
format_amount(coin.amount, helpers.DECIMALS) + " " + coin.denom
)
coin_page.normal("to")
coin_page.mono(*split_address(msg.address))
pages.append(coin_page)
return pages
pages = []
for txinput in msg.inputs:
pages.extend(make_input_output_pages(txinput, "input"))
for txoutput in msg.outputs:
pages.extend(make_input_output_pages(txoutput, "output"))
return await require_hold_to_confirm(
ctx, Paginated(pages), ButtonRequestType.ConfirmOutput
)
async def require_confirm_cancel(ctx, msg: BinanceCancelMsg):
page1 = Text("Confirm cancel 1/2", ui.ICON_SEND, icon_color=ui.GREEN)
page1.normal("Sender address:")
page1.bold(msg.sender)
page1.normal("Pair:")
page1.bold(msg.symbol)
page2 = Text("Confirm cancel 2/2", ui.ICON_SEND, icon_color=ui.GREEN)
page2.normal("Order ID:")
page2.bold(msg.refid)
return await require_hold_to_confirm(
ctx, Paginated([page1, page2]), ButtonRequestType.SignTx
)
async def require_confirm_order(ctx, msg: BinanceOrderMsg):
page1 = Text("Confirm order 1/3", ui.ICON_SEND, icon_color=ui.GREEN)
page1.normal("Sender address:")
page1.bold(msg.sender)
page2 = Text("Confirm order 2/3", ui.ICON_SEND, icon_color=ui.GREEN)
page2.normal("Pair:")
page2.bold(msg.symbol)
page2.normal("Side:")
if msg.side == BinanceOrderSide.BUY:
page2.bold("Buy")
elif msg.side == BinanceOrderSide.SELL:
page2.bold("Sell")
page3 = Text("Confirm order 3/3", ui.ICON_SEND, icon_color=ui.GREEN)
page3.normal("Quantity:")
page3.bold(format_amount(msg.quantity, helpers.DECIMALS))
page3.normal("Price:")
page3.bold(format_amount(msg.price, helpers.DECIMALS))
return await require_hold_to_confirm(
ctx, Paginated([page1, page2, page3]), ButtonRequestType.SignTx
)