Skip to content

Commit bb5b1b3

Browse files
committed
wizard: move pasphrase flow from Qt into Abstract Wizard
moves the separate passphrase flow logic from Qt into the Abstract Wizard base class so the same flow can be shared between Qt and QML
1 parent 250fdae commit bb5b1b3

File tree

2 files changed

+24
-42
lines changed

2 files changed

+24
-42
lines changed

electrum/gui/qt/wizard/wallet.py

Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,19 @@ def __init__(self, config: 'SimpleConfig', app: 'QElectrumApplication', plugins:
9494
'wallet_type': {'gui': WCWalletType},
9595
'keystore_type': {'gui': WCKeystoreType},
9696
'create_seed': {'gui': WCCreateSeed},
97+
'create_ext': {'gui': WCEnterExt},
9798
'confirm_seed': {'gui': WCConfirmSeed},
99+
'confirm_ext': {'gui': WCConfirmExt},
98100
'have_seed': {'gui': WCHaveSeed},
101+
'have_ext': {'gui': WCEnterExt},
99102
'choose_hardware_device': {'gui': WCChooseHWDevice},
100103
'script_and_derivation': {'gui': WCScriptAndDerivation},
101104
'have_master_key': {'gui': WCHaveMasterKey},
102105
'multisig': {'gui': WCMultisig},
103106
'multisig_cosigner_keystore': {'gui': WCCosignerKeystore},
104107
'multisig_cosigner_key': {'gui': WCHaveMasterKey},
105108
'multisig_cosigner_seed': {'gui': WCHaveSeed},
109+
'multisig_cosigner_have_ext': {'gui': WCEnterExt},
106110
'multisig_cosigner_hardware': {'gui': WCChooseHWDevice},
107111
'multisig_cosigner_script_and_derivation': {'gui': WCScriptAndDerivation},
108112
'imported': {'gui': WCImport},
@@ -122,47 +126,6 @@ def __init__(self, config: 'SimpleConfig', app: 'QElectrumApplication', plugins:
122126
}
123127
})
124128

125-
# insert seed extension entry/confirm as separate views
126-
self.navmap_merge({
127-
'create_seed': {
128-
'next': lambda d: 'create_ext' if self.wants_ext(d) else 'confirm_seed'
129-
},
130-
'create_ext': {
131-
'next': 'confirm_seed',
132-
'gui': WCEnterExt
133-
},
134-
'confirm_seed': {
135-
'next': lambda d: 'confirm_ext' if self.wants_ext(d) else self.on_have_or_confirm_seed(d),
136-
'accept': lambda d: None if self.wants_ext(d) else self.maybe_master_pubkey(d)
137-
},
138-
'confirm_ext': {
139-
'next': self.on_have_or_confirm_seed,
140-
'accept': self.maybe_master_pubkey,
141-
'gui': WCConfirmExt
142-
},
143-
'have_seed': {
144-
'next': lambda d: 'have_ext' if self.wants_ext(d) else self.on_have_or_confirm_seed(d),
145-
'accept': lambda d: None if self.wants_ext(d) else self.maybe_master_pubkey(d),
146-
'last': lambda d: self.is_single_password() and not
147-
(self.needs_derivation_path(d) or self.is_multisig(d) or self.wants_ext(d))
148-
},
149-
'have_ext': {
150-
'next': self.on_have_or_confirm_seed,
151-
'accept': self.maybe_master_pubkey,
152-
'gui': WCEnterExt
153-
},
154-
'multisig_cosigner_seed': {
155-
'next': lambda d: 'multisig_cosigner_have_ext' if self.wants_ext(d) else self.on_have_cosigner_seed(d),
156-
'last': lambda d: self.is_single_password() and self.last_cosigner(d) and not
157-
(self.needs_derivation_path(d) or self.wants_ext(d))
158-
},
159-
'multisig_cosigner_have_ext': {
160-
'next': self.on_have_cosigner_seed,
161-
'last': lambda d: self.is_single_password() and self.last_cosigner(d) and not self.needs_derivation_path(d),
162-
'gui': WCEnterExt
163-
},
164-
})
165-
166129
run_hook('init_wallet_wizard', self)
167130

168131
@property

electrum/wizard.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,14 +391,28 @@ def __init__(self, daemon: 'Daemon', plugins: 'Plugins'):
391391
'next': self.on_keystore_type
392392
},
393393
'create_seed': {
394-
'next': 'confirm_seed'
394+
'next': lambda d: 'create_ext' if self.wants_ext(d) else 'confirm_seed',
395+
},
396+
'create_ext': {
397+
'next': 'confirm_seed',
395398
},
396399
'confirm_seed': {
400+
'next': lambda d: 'confirm_ext' if self.wants_ext(d) else self.on_have_or_confirm_seed(d),
401+
'accept': lambda d: None if self.wants_ext(d) else self.maybe_master_pubkey(d),
402+
'last': lambda d: self.is_single_password() and not self.is_multisig(d) and not self.wants_ext(d),
403+
},
404+
'confirm_ext': {
397405
'next': self.on_have_or_confirm_seed,
398406
'accept': self.maybe_master_pubkey,
399407
'last': lambda d: self.is_single_password() and not self.is_multisig(d)
400408
},
401409
'have_seed': {
410+
'next': lambda d: 'have_ext' if self.wants_ext(d) else self.on_have_or_confirm_seed(d),
411+
'accept': lambda d: None if self.wants_ext(d) else self.maybe_master_pubkey(d),
412+
'last': lambda d: self.is_single_password() and not
413+
(self.needs_derivation_path(d) or self.is_multisig(d) or self.wants_ext(d)),
414+
},
415+
'have_ext': {
402416
'next': self.on_have_or_confirm_seed,
403417
'accept': self.maybe_master_pubkey,
404418
'last': lambda d: self.is_single_password() and not
@@ -428,6 +442,11 @@ def __init__(self, daemon: 'Daemon', plugins: 'Plugins'):
428442
'last': lambda d: self.is_single_password() and self.last_cosigner(d)
429443
},
430444
'multisig_cosigner_seed': {
445+
'next': lambda d: 'multisig_cosigner_have_ext' if self.wants_ext(d) else self.on_have_cosigner_seed(d),
446+
'last': lambda d: self.is_single_password() and self.last_cosigner(d) and not
447+
(self.needs_derivation_path(d) or self.wants_ext(d)),
448+
},
449+
'multisig_cosigner_have_ext': {
431450
'next': self.on_have_cosigner_seed,
432451
'last': lambda d: self.is_single_password() and self.last_cosigner(d) and not self.needs_derivation_path(d)
433452
},

0 commit comments

Comments
 (0)