From 22d3a5edbb0a1393c9dd5bda07e9d484167623af Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Mon, 18 Sep 2023 22:27:50 +0200 Subject: [PATCH] wizard: fix trezor initialisation/recover not setting page valid to True add auto-proceed to next page after init to trezor, safe_t, keepkey --- electrum/plugins/coldcard/coldcard.py | 2 -- electrum/plugins/jade/jade.py | 2 -- electrum/plugins/keepkey/keepkey.py | 2 -- electrum/plugins/keepkey/qt.py | 8 +++----- electrum/plugins/ledger/ledger.py | 2 -- electrum/plugins/safe_t/qt.py | 8 +++----- electrum/plugins/safe_t/safe_t.py | 2 -- electrum/plugins/trezor/qt.py | 16 ++++++++++------ electrum/plugins/trezor/trezor.py | 2 -- 9 files changed, 16 insertions(+), 28 deletions(-) diff --git a/electrum/plugins/coldcard/coldcard.py b/electrum/plugins/coldcard/coldcard.py index dcae901f4..9c802f10d 100644 --- a/electrum/plugins/coldcard/coldcard.py +++ b/electrum/plugins/coldcard/coldcard.py @@ -602,8 +602,6 @@ class ColdcardPlugin(HW_PluginBase): keystore.handler.show_error(_('This function is only available for standard wallets when using {}.').format(self.device)) return - # new wizard - def wizard_entry_for_device(self, device_info: 'DeviceInfo', *, new_wallet=True) -> str: if new_wallet: return 'coldcard_start' if device_info.initialized else 'coldcard_not_initialized' diff --git a/electrum/plugins/jade/jade.py b/electrum/plugins/jade/jade.py index e2adfa3ba..3d7d04220 100644 --- a/electrum/plugins/jade/jade.py +++ b/electrum/plugins/jade/jade.py @@ -463,8 +463,6 @@ class JadePlugin(HW_PluginBase): if hw_address != address: keystore.handler.show_error(_('The address generated by {} does not match!').format(self.device)) - # new wizard - def wizard_entry_for_device(self, device_info: 'DeviceInfo', *, new_wallet=True) -> str: if new_wallet: return 'jade_start' if device_info.initialized else 'jade_not_initialized' diff --git a/electrum/plugins/keepkey/keepkey.py b/electrum/plugins/keepkey/keepkey.py index ecbb0444e..6771786a9 100644 --- a/electrum/plugins/keepkey/keepkey.py +++ b/electrum/plugins/keepkey/keepkey.py @@ -425,8 +425,6 @@ class KeepKeyPlugin(HW_PluginBase): tx = self.prev_tx[tx_hash] return self.electrum_tx_to_txtype(tx) - # new wizard - def wizard_entry_for_device(self, device_info: 'DeviceInfo', *, new_wallet=True) -> str: if new_wallet: return 'keepkey_start' if device_info.initialized else 'keepkey_not_initialized' diff --git a/electrum/plugins/keepkey/qt.py b/electrum/plugins/keepkey/qt.py index db9c4d906..00d6252bc 100644 --- a/electrum/plugins/keepkey/qt.py +++ b/electrum/plugins/keepkey/qt.py @@ -678,12 +678,14 @@ class WCKeepkeyInit(WizardComponent, Logger): def initialize_device_task(settings, method, device_id, handler): try: self.plugin._initialize_device(settings, method, device_id, handler) + self.logger.info('Done initialize device') self.valid = True + self.wizard.requestNext.emit() # triggers Next GUI thread from event loop except Exception as e: self.valid = False self.error = repr(e) finally: - self.init_done() + self.busy = False t = threading.Thread( target=initialize_device_task, @@ -691,9 +693,5 @@ class WCKeepkeyInit(WizardComponent, Logger): daemon=True) t.start() - def init_done(self): - self.logger.info('Done initialize device') - self.busy = False - def apply(self): pass diff --git a/electrum/plugins/ledger/ledger.py b/electrum/plugins/ledger/ledger.py index da2728ee4..fc042fdc8 100644 --- a/electrum/plugins/ledger/ledger.py +++ b/electrum/plugins/ledger/ledger.py @@ -1454,8 +1454,6 @@ class LedgerPlugin(HW_PluginBase): keystore.show_address(sequence, txin_type) - # new wizard - def wizard_entry_for_device(self, device_info: 'DeviceInfo', *, new_wallet=True) -> str: if new_wallet: return 'ledger_start' if device_info.initialized else 'ledger_not_initialized' diff --git a/electrum/plugins/safe_t/qt.py b/electrum/plugins/safe_t/qt.py index 301213968..1c29f234d 100644 --- a/electrum/plugins/safe_t/qt.py +++ b/electrum/plugins/safe_t/qt.py @@ -610,12 +610,14 @@ class WCSafeTInit(WizardComponent, Logger): def initialize_device_task(settings, method, device_id, handler): try: self.plugin._initialize_device(settings, method, device_id, handler) + self.logger.info('Done initialize device') self.valid = True + self.wizard.requestNext.emit() # triggers Next GUI thread from event loop except Exception as e: self.valid = False self.error = repr(e) finally: - self.init_done() + self.busy = False t = threading.Thread( target=initialize_device_task, @@ -623,9 +625,5 @@ class WCSafeTInit(WizardComponent, Logger): daemon=True) t.start() - def init_done(self): - self.logger.info('Done initialize device') - self.busy = False - def apply(self): pass diff --git a/electrum/plugins/safe_t/safe_t.py b/electrum/plugins/safe_t/safe_t.py index f26b89390..a7981b317 100644 --- a/electrum/plugins/safe_t/safe_t.py +++ b/electrum/plugins/safe_t/safe_t.py @@ -397,8 +397,6 @@ class SafeTPlugin(HW_PluginBase): tx = self.prev_tx[tx_hash] return self.electrum_tx_to_txtype(tx) - # new wizard - def wizard_entry_for_device(self, device_info: 'DeviceInfo', *, new_wallet=True) -> str: if new_wallet: return 'safet_start' if device_info.initialized else 'safet_not_initialized' diff --git a/electrum/plugins/trezor/qt.py b/electrum/plugins/trezor/qt.py index 0c1b1a9aa..9e68b59ec 100644 --- a/electrum/plugins/trezor/qt.py +++ b/electrum/plugins/trezor/qt.py @@ -885,8 +885,16 @@ class WCTrezorInit(WizardComponent, Logger): client.handler = self.plugin.create_handler(self.wizard) def initialize_device_task(settings, method, device_id, handler): - self.plugin._initialize_device(settings, method, device_id, handler) - self.init_done() + try: + self.plugin._initialize_device(settings, method, device_id, handler) + self.logger.info('Done initialize device') + self.valid = True + self.wizard.requestNext.emit() # triggers Next GUI thread from event loop + except Exception as e: + self.valid = False + self.error = repr(e) + finally: + self.busy = False t = threading.Thread( target=initialize_device_task, @@ -894,9 +902,5 @@ class WCTrezorInit(WizardComponent, Logger): daemon=True) t.start() - def init_done(self): - self.logger.info('Done initialize device') - self.busy = False - def apply(self): pass diff --git a/electrum/plugins/trezor/trezor.py b/electrum/plugins/trezor/trezor.py index ed153044a..ec2d95ba8 100644 --- a/electrum/plugins/trezor/trezor.py +++ b/electrum/plugins/trezor/trezor.py @@ -465,8 +465,6 @@ class TrezorPlugin(HW_PluginBase): ] return t - # new wizard - def wizard_entry_for_device(self, device_info: 'DeviceInfo', *, new_wallet=True) -> str: if new_wallet: # new wallet return 'trezor_not_initialized' if not device_info.initialized else 'trezor_start'