request_pin, request_passphrase: ui fixes
This commit is contained in:
parent
c1f097f2b4
commit
9f48e3d471
|
@ -9,7 +9,7 @@ class PinCancelled(Exception):
|
||||||
|
|
||||||
|
|
||||||
@ui.layout
|
@ui.layout
|
||||||
async def request_pin(code: int = None, cancellable: bool = True) -> str:
|
async def request_pin(code = None, cancellable: bool = True) -> str:
|
||||||
|
|
||||||
def onchange():
|
def onchange():
|
||||||
c = dialog.cancel
|
c = dialog.cancel
|
||||||
|
@ -18,13 +18,18 @@ async def request_pin(code: int = None, cancellable: bool = True) -> str:
|
||||||
if c.content is not back:
|
if c.content is not back:
|
||||||
c.normal_style = ui.BTN_CLEAR['normal']
|
c.normal_style = ui.BTN_CLEAR['normal']
|
||||||
c.content = back
|
c.content = back
|
||||||
|
c.enable()
|
||||||
c.taint()
|
c.taint()
|
||||||
c.render()
|
|
||||||
else:
|
else:
|
||||||
lock = res.load(ui.ICON_LOCK)
|
lock = res.load(ui.ICON_LOCK)
|
||||||
if c.content is not lock and cancellable:
|
if not cancellable and c.content:
|
||||||
|
c.content = ''
|
||||||
|
c.disable()
|
||||||
|
c.taint()
|
||||||
|
elif c.content is not lock:
|
||||||
c.normal_style = ui.BTN_CANCEL['normal']
|
c.normal_style = ui.BTN_CANCEL['normal']
|
||||||
c.content = lock
|
c.content = lock
|
||||||
|
c.enable()
|
||||||
c.taint()
|
c.taint()
|
||||||
c.render()
|
c.render()
|
||||||
|
|
||||||
|
@ -35,9 +40,6 @@ async def request_pin(code: int = None, cancellable: bool = True) -> str:
|
||||||
dialog.cancel.area = ui.grid(12)
|
dialog.cancel.area = ui.grid(12)
|
||||||
dialog.confirm.area = ui.grid(14)
|
dialog.confirm.area = ui.grid(14)
|
||||||
matrix.onchange()
|
matrix.onchange()
|
||||||
if not cancellable:
|
|
||||||
dialog.cancel.content = ''
|
|
||||||
dialog.cancel.disable()
|
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
result = await dialog
|
result = await dialog
|
||||||
|
@ -50,7 +52,9 @@ async def request_pin(code: int = None, cancellable: bool = True) -> str:
|
||||||
raise PinCancelled()
|
raise PinCancelled()
|
||||||
|
|
||||||
|
|
||||||
def _get_label(code: int):
|
def _get_label(code):
|
||||||
|
if isinstance(code, str):
|
||||||
|
return code
|
||||||
if code is None:
|
if code is None:
|
||||||
code = PinMatrixRequestType.Current
|
code = PinMatrixRequestType.Current
|
||||||
if code == PinMatrixRequestType.NewFirst:
|
if code == PinMatrixRequestType.NewFirst:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from trezor import config, loop, ui
|
from trezor import config, loop, ui, wire
|
||||||
from trezor.messages import FailureType, PinMatrixRequestType
|
from trezor.messages import FailureType, PinMatrixRequestType
|
||||||
from trezor.messages.ButtonRequest import ButtonRequest
|
from trezor.messages.ButtonRequest import ButtonRequest
|
||||||
from trezor.messages.ButtonRequestType import Other
|
from trezor.messages.ButtonRequestType import Other
|
||||||
|
@ -8,7 +8,7 @@ from trezor.messages import wire_types
|
||||||
from trezor.pin import pin_to_int, show_pin_timeout
|
from trezor.pin import pin_to_int, show_pin_timeout
|
||||||
from trezor.ui.text import Text
|
from trezor.ui.text import Text
|
||||||
from apps.common.confirm import require_confirm
|
from apps.common.confirm import require_confirm
|
||||||
from apps.common.request_pin import request_pin
|
from apps.common.request_pin import request_pin, PinCancelled
|
||||||
|
|
||||||
|
|
||||||
async def change_pin(ctx, msg):
|
async def change_pin(ctx, msg):
|
||||||
|
@ -62,11 +62,13 @@ def confirm_change_pin(ctx, msg):
|
||||||
'set new PIN?'))
|
'set new PIN?'))
|
||||||
|
|
||||||
|
|
||||||
async def request_pin_ack(ctx, code=None, *args, **kwargs):
|
async def request_pin_ack(ctx, *args, **kwargs):
|
||||||
if code is None:
|
# TODO: send PinMatrixRequest here, with specific code?
|
||||||
code = Other
|
await ctx.call(ButtonRequest(code=Other), wire_types.ButtonAck)
|
||||||
await ctx.call(ButtonRequest(code=code), wire_types.ButtonAck)
|
try:
|
||||||
return await request_pin(*args, **kwargs)
|
return await request_pin(*args, **kwargs)
|
||||||
|
except PinCancelled:
|
||||||
|
raise wire.FailureError(FailureType.ActionCancelled, 'Cancelled')
|
||||||
|
|
||||||
|
|
||||||
async def request_pin_confirm(ctx, *args, **kwargs):
|
async def request_pin_confirm(ctx, *args, **kwargs):
|
||||||
|
|
|
@ -6,7 +6,7 @@ from trezor.messages.FailureType import ProcessError, UnexpectedMessage
|
||||||
from trezor.messages.Success import Success
|
from trezor.messages.Success import Success
|
||||||
from trezor.messages.wire_types import ButtonAck
|
from trezor.messages.wire_types import ButtonAck
|
||||||
from trezor.pin import pin_to_int
|
from trezor.pin import pin_to_int
|
||||||
from trezor.ui.keyboard import MnemonicKeyboard
|
from trezor.ui.mnemonic import MnemonicKeyboard
|
||||||
from trezor.ui.text import Text
|
from trezor.ui.text import Text
|
||||||
from trezor.ui.word_select import WordSelector
|
from trezor.ui.word_select import WordSelector
|
||||||
from trezor.utils import format_ordinal
|
from trezor.utils import format_ordinal
|
||||||
|
|
|
@ -7,7 +7,7 @@ from trezor.messages.EntropyRequest import EntropyRequest
|
||||||
from trezor.messages.Success import Success
|
from trezor.messages.Success import Success
|
||||||
from trezor.pin import pin_to_int
|
from trezor.pin import pin_to_int
|
||||||
from trezor.ui.confirm import HoldToConfirmDialog
|
from trezor.ui.confirm import HoldToConfirmDialog
|
||||||
from trezor.ui.keyboard import MnemonicKeyboard
|
from trezor.ui.mnemonic import MnemonicKeyboard
|
||||||
from trezor.ui.scroll import Scrollpage, animate_swipe, paginate
|
from trezor.ui.scroll import Scrollpage, animate_swipe, paginate
|
||||||
from trezor.ui.text import Text
|
from trezor.ui.text import Text
|
||||||
from trezor.utils import chunks, format_ordinal
|
from trezor.utils import chunks, format_ordinal
|
||||||
|
|
|
@ -4,6 +4,7 @@ from apps.common.request_pin import request_pin
|
||||||
|
|
||||||
|
|
||||||
async def bootscreen():
|
async def bootscreen():
|
||||||
|
label = None
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
if not config.has_pin():
|
if not config.has_pin():
|
||||||
|
@ -11,9 +12,11 @@ async def bootscreen():
|
||||||
return
|
return
|
||||||
await lockscreen()
|
await lockscreen()
|
||||||
while True:
|
while True:
|
||||||
pin = await request_pin()
|
pin = await request_pin(label)
|
||||||
if config.unlock(pin_to_int(pin), show_pin_timeout):
|
if config.unlock(pin_to_int(pin), show_pin_timeout):
|
||||||
return
|
return
|
||||||
|
else:
|
||||||
|
label = 'Wrong PIN, enter again'
|
||||||
except: # noqa: E722
|
except: # noqa: E722
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -189,3 +189,5 @@ class PassphraseKeyboard(ui.Widget):
|
||||||
else:
|
else:
|
||||||
self.page = (self.page - 1) % len(KEYBOARD_KEYS)
|
self.page = (self.page - 1) % len(KEYBOARD_KEYS)
|
||||||
self.keys = key_buttons(KEYBOARD_KEYS[self.page])
|
self.keys = key_buttons(KEYBOARD_KEYS[self.page])
|
||||||
|
self.back.taint()
|
||||||
|
self.done.taint()
|
||||||
|
|
Loading…
Reference in New Issue