Merge pull request #3683 from SomberNight/wizard_scriptnotsupported
wizard: allow to choose derivation again if script type is not supported
This commit is contained in:
commit
d38303354c
|
@ -31,6 +31,9 @@ from .wallet import Imported_Wallet, Standard_Wallet, Multisig_Wallet, wallet_ty
|
|||
from .i18n import _
|
||||
|
||||
|
||||
class ScriptTypeNotSupported(Exception): pass
|
||||
|
||||
|
||||
class BaseWizard(object):
|
||||
|
||||
def __init__(self, config, storage):
|
||||
|
@ -242,9 +245,15 @@ class BaseWizard(object):
|
|||
('p2sh-segwit BIP49', bip44_derivation(0, bip43_purpose=49)),
|
||||
('native-segwit BIP84', bip44_derivation(0, bip43_purpose=84)),
|
||||
)
|
||||
self.line_dialog(run_next=f, title=_('Derivation'), message=message,
|
||||
default=default, test=bitcoin.is_bip32_derivation,
|
||||
presets=presets)
|
||||
while True:
|
||||
try:
|
||||
self.line_dialog(run_next=f, title=_('Derivation'), message=message,
|
||||
default=default, test=bitcoin.is_bip32_derivation,
|
||||
presets=presets)
|
||||
return
|
||||
except ScriptTypeNotSupported as e:
|
||||
self.show_error(e)
|
||||
# let the user choose again
|
||||
|
||||
def on_hw_derivation(self, name, device_info, derivation):
|
||||
from .keystore import hardware_keystore
|
||||
|
@ -254,6 +263,8 @@ class BaseWizard(object):
|
|||
return
|
||||
try:
|
||||
xpub = self.plugin.get_xpub(device_info.device.id_, derivation, xtype, self)
|
||||
except ScriptTypeNotSupported:
|
||||
raise # this is handled in derivation_dialog
|
||||
except BaseException as e:
|
||||
self.show_error(e)
|
||||
return
|
||||
|
|
|
@ -12,6 +12,7 @@ try:
|
|||
from electrum.keystore import Hardware_KeyStore
|
||||
from ..hw_wallet import HW_PluginBase
|
||||
from electrum.util import print_error, to_string, UserCancelled
|
||||
from electrum.base_wizard import ScriptTypeNotSupported
|
||||
|
||||
import time
|
||||
import hid
|
||||
|
@ -697,6 +698,8 @@ class DigitalBitboxPlugin(HW_PluginBase):
|
|||
|
||||
|
||||
def get_xpub(self, device_id, derivation, xtype, wizard):
|
||||
if xtype not in ('standard', 'p2wpkh-p2sh'):
|
||||
raise ScriptTypeNotSupported(_('This type of script is not supported with the Digital Bitbox.'))
|
||||
devmgr = self.device_manager()
|
||||
client = devmgr.client_by_id(device_id)
|
||||
client.handler = self.create_handler(wizard)
|
||||
|
|
|
@ -10,6 +10,7 @@ from electrum.i18n import _
|
|||
from electrum.plugins import BasePlugin
|
||||
from electrum.transaction import deserialize
|
||||
from electrum.keystore import Hardware_KeyStore, is_xpubkey, parse_xpubkey
|
||||
from electrum.base_wizard import ScriptTypeNotSupported
|
||||
|
||||
from ..hw_wallet import HW_PluginBase
|
||||
|
||||
|
@ -208,6 +209,8 @@ class KeepKeyCompatiblePlugin(HW_PluginBase):
|
|||
client.used()
|
||||
|
||||
def get_xpub(self, device_id, derivation, xtype, wizard):
|
||||
if xtype not in ('standard',):
|
||||
raise ScriptTypeNotSupported(_('This type of script is not supported with KeepKey.'))
|
||||
devmgr = self.device_manager()
|
||||
client = devmgr.client_by_id(device_id)
|
||||
client.handler = wizard
|
||||
|
|
Loading…
Reference in New Issue