better
This commit is contained in:
parent
60074be670
commit
30546d0b5e
@ -2357,13 +2357,13 @@ async def reflash_gpu(*a):
|
||||
from glob import dis
|
||||
await dis.gpu.reflash_gpu_ux()
|
||||
|
||||
async def scan_any_qr(*a, expect_secret=False):
|
||||
async def scan_any_qr(menu, label, item):
|
||||
expect_secret, tmp = item.arg
|
||||
await _scan_any_qr(expect_secret, tmp)
|
||||
|
||||
async def _scan_any_qr(expect_secret=False, tmp=False):
|
||||
from ux_q1 import QRScannerInteraction
|
||||
x = QRScannerInteraction()
|
||||
await x.scan_anything(expect_secret=expect_secret)
|
||||
|
||||
async def scan_secret_import(*a):
|
||||
# trying to import a secret
|
||||
return await scan_any_qr(expect_secret=True)
|
||||
await x.scan_anything(expect_secret=expect_secret, tmp=tmp)
|
||||
|
||||
# EOF
|
||||
|
||||
@ -317,7 +317,7 @@ ImportWallet = [
|
||||
MenuItem("18 Words", menu=start_seed_import, arg=18),
|
||||
MenuItem("24 Words", menu=start_seed_import, arg=24),
|
||||
MenuItem('Scan QR Code', predicate=lambda: version.has_qr,
|
||||
shortcut=KEY_QR, f=scan_secret_import),
|
||||
shortcut=charcodes.KEY_QR, f=scan_any_qr, arg=(True, False)),
|
||||
MenuItem("Restore Backup", f=restore_everything),
|
||||
MenuItem("Clone Coldcard", menu=clone_start),
|
||||
MenuItem("Import XPRV", f=import_xprv, arg=False), # ephemeral=False
|
||||
@ -347,7 +347,7 @@ NormalSystem = [
|
||||
# xxxxxxxxxxxxxxxx
|
||||
MenuItem('Ready To Sign', f=ready2sign),
|
||||
MenuItem('Scan Any QR Code', predicate=lambda: version.has_qr,
|
||||
shortcut=KEY_QR, f=scan_any_qr),
|
||||
shortcut=charcodes.KEY_QR, f=scan_any_qr, arg=(False, True)),
|
||||
MenuItem('Passphrase', f=start_b39_pw, predicate=bip39_passphrase_active),
|
||||
MenuItem('Start HSM Mode', f=start_hsm_menu_item, predicate=hsm_policy_available),
|
||||
MenuItem("Address Explorer", f=address_explore),
|
||||
|
||||
@ -489,8 +489,7 @@ class PinAttempt:
|
||||
|
||||
# On Q1, update status icons
|
||||
from glob import dis
|
||||
is_pass, is_tmp = (1, 1) if bip39pw else (0, 1)
|
||||
dis.draw_status(bip39=is_pass, tmp=is_tmp)
|
||||
dis.draw_status(bip39=1 if bip39pw else 0, tmp=1)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
@ -400,9 +400,7 @@ async def new_from_dice(nwords):
|
||||
|
||||
words = await approve_word_list(seed, nwords)
|
||||
if words:
|
||||
set_seed_value(words)
|
||||
# send them to home menu, now with a wallet enabled
|
||||
goto_top_menu(first_time=True)
|
||||
await commit_new_words(words)
|
||||
|
||||
def in_seed_vault(encoded):
|
||||
# Test if indicated xfp (or currently active XFP) is in the seed vault already.
|
||||
@ -518,9 +516,7 @@ async def make_new_wallet(nwords):
|
||||
seed = generate_seed()
|
||||
words = await approve_word_list(seed, nwords)
|
||||
if words:
|
||||
set_seed_value(words)
|
||||
# send them to home menu, now with a wallet enabled
|
||||
goto_top_menu(first_time=True)
|
||||
await commit_new_words(words)
|
||||
|
||||
|
||||
async def ephemeral_seed_import(nwords):
|
||||
@ -546,7 +542,7 @@ async def ephemeral_seed_generate(nwords):
|
||||
async def set_seed_extended_key(extended_key):
|
||||
encoded, chain = xprv_to_encoded_secret(extended_key)
|
||||
set_seed_value(encoded=encoded, chain=chain)
|
||||
goto_top_menu()
|
||||
goto_top_menu(first_time=True)
|
||||
|
||||
async def set_ephemeral_seed_extended_key(extended_key, meta=None):
|
||||
encoded, chain = xprv_to_encoded_secret(extended_key)
|
||||
@ -1025,8 +1021,8 @@ class EphemeralSeedMenu(MenuSystem):
|
||||
@classmethod
|
||||
def construct(cls):
|
||||
from glob import NFC
|
||||
from actions import nfc_recv_ephemeral, import_tapsigner_backup_file, import_xprv, restore_temporary
|
||||
from actions import scan_secret_import
|
||||
from actions import nfc_recv_ephemeral, import_tapsigner_backup_file, import_xprv
|
||||
from actions import restore_temporary, scan_any_qr
|
||||
from charcodes import KEY_QR
|
||||
|
||||
import_ephemeral_menu = [
|
||||
@ -1045,7 +1041,7 @@ class EphemeralSeedMenu(MenuSystem):
|
||||
rv = [
|
||||
MenuItem("Generate Words", menu=gen_ephemeral_menu),
|
||||
MenuItem('Import from QR Scan', predicate=lambda: version.has_qr,
|
||||
shortcut=KEY_QR, f=scan_secret_import),
|
||||
shortcut=KEY_QR, f=scan_any_qr, arg=(True, True)),
|
||||
MenuItem("Import Words", menu=import_ephemeral_menu),
|
||||
MenuItem("Import XPRV", f=import_xprv, arg=True), # ephemeral=True
|
||||
MenuItem("Tapsigner Backup", f=import_tapsigner_backup_file, arg=True), # ephemeral=True
|
||||
|
||||
@ -682,14 +682,9 @@ class QRScannerInteraction:
|
||||
continue
|
||||
|
||||
|
||||
async def scan_anything(self, expect_secret=False):
|
||||
async def scan_anything(self, expect_secret=False, tmp=False):
|
||||
# start a QR scan, and act on what we find, whatever it may be.
|
||||
from flow import has_secrets
|
||||
from actions import goto_top_menu
|
||||
problem = None
|
||||
|
||||
had_master = has_secrets()
|
||||
|
||||
while 1:
|
||||
prompt = 'Scan any QR code, or CANCEL' if not expect_secret else \
|
||||
'Scan XPRV or Seed Words, or CANCEL'
|
||||
@ -709,23 +704,20 @@ class QRScannerInteraction:
|
||||
problem = "Unable to decode QR"
|
||||
continue
|
||||
|
||||
# Limitation: assuming ephemeral import here
|
||||
if what == 'xprv':
|
||||
from actions import import_extended_key_as_secret
|
||||
text_xprv, = vals
|
||||
await import_extended_key_as_secret(text_xprv, had_master)
|
||||
goto_top_menu(first_time=(not had_master))
|
||||
await import_extended_key_as_secret(text_xprv, tmp)
|
||||
return
|
||||
|
||||
if what == 'words':
|
||||
from seed import set_ephemeral_seed_words, set_seed_value
|
||||
from seed import commit_new_words, set_ephemeral_seed_words # dirty API
|
||||
words, = vals
|
||||
if had_master:
|
||||
if tmp:
|
||||
await set_ephemeral_seed_words(words, meta='From QR')
|
||||
else:
|
||||
set_seed_value(words=words)
|
||||
await commit_new_words(words=words)
|
||||
|
||||
goto_top_menu(first_time=(not had_master))
|
||||
return
|
||||
|
||||
if what == 'psbt':
|
||||
|
||||
Loading…
Reference in New Issue
Block a user