transactions: reading QR codes: clean-up and accept all encodings
This commit is contained in:
@@ -397,12 +397,9 @@ class ElectrumWindow(App):
|
||||
self.set_ln_invoice(data)
|
||||
return
|
||||
# try to decode transaction
|
||||
from electrum.transaction import Transaction
|
||||
from electrum.util import bh2u
|
||||
from electrum.transaction import tx_from_any
|
||||
try:
|
||||
text = bh2u(base_decode(data, None, base=43))
|
||||
tx = Transaction(text)
|
||||
tx.deserialize()
|
||||
tx = tx_from_any(data)
|
||||
except:
|
||||
tx = None
|
||||
if tx:
|
||||
|
||||
@@ -2723,10 +2723,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
|
||||
d = PasswordDialog(parent, msg)
|
||||
return d.run()
|
||||
|
||||
def tx_from_text(self, txt: Union[str, bytes]) -> Union[None, 'PartialTransaction', 'Transaction']:
|
||||
def tx_from_text(self, data: Union[str, bytes]) -> Union[None, 'PartialTransaction', 'Transaction']:
|
||||
from electrum.transaction import tx_from_any
|
||||
try:
|
||||
return tx_from_any(txt)
|
||||
return tx_from_any(data)
|
||||
except BaseException as e:
|
||||
self.show_critical(_("Electrum was unable to parse your transaction") + ":\n" + repr(e))
|
||||
return
|
||||
@@ -2745,11 +2745,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
|
||||
self.pay_to_URI(data)
|
||||
return
|
||||
# else if the user scanned an offline signed tx
|
||||
try:
|
||||
data = bh2u(bitcoin.base_decode(data, length=None, base=43))
|
||||
except BaseException as e:
|
||||
self.show_error((_('Could not decode QR code')+':\n{}').format(repr(e)))
|
||||
return
|
||||
tx = self.tx_from_text(data)
|
||||
if not tx:
|
||||
return
|
||||
|
||||
@@ -914,7 +914,9 @@ def tx_from_any(raw: Union[str, bytes]) -> Union['PartialTransaction', 'Transact
|
||||
return PartialTransaction.from_raw_psbt(raw)
|
||||
except BadHeaderMagic:
|
||||
pass
|
||||
return Transaction(raw)
|
||||
tx = Transaction(raw)
|
||||
tx.deserialize()
|
||||
return tx
|
||||
|
||||
|
||||
class PSBTGlobalType(IntEnum):
|
||||
|
||||
Reference in New Issue
Block a user