Browse Source

qml: qeinvoice: fix regression in update_userinfo

follow-up 3b0cdef871

```
 29.60 | E | lnworker.LNWallet.[test_segwit_2] | Exception in pay_invoice: TypeError("unhashable type: 'list'")
Traceback (most recent call last):
  File "/home/user/wspace/electrum/electrum/util.py", line 1153, in wrapper
    return await func(*args, **kwargs)
  File "/home/user/wspace/electrum/electrum/lnworker.py", line 1518, in pay_invoice
    self.set_invoice_status(key, PR_INFLIGHT)
  File "/home/user/wspace/electrum/electrum/lnworker.py", line 2404, in set_invoice_status
    util.trigger_callback('invoice_status', self.wallet, key, status)
  File "/home/user/wspace/electrum/electrum/util.py", line 1796, in trigger_callback
    callback(*args)
  File "/home/user/wspace/electrum/electrum/gui/qml/qeinvoice.py", line 90, in on_event_invoice_status
    self.update_userinfo()
  File "/home/user/wspace/electrum/electrum/gui/qml/qeinvoice.py", line 327, in update_userinfo
    self.userinfo = userinfo_for_invoice_status([self.status])
  File "/home/user/wspace/electrum/electrum/gui/qml/qeinvoice.py", line 305, in userinfo_for_invoice_status
    return {
TypeError: unhashable type: 'list'
```
master
SomberNight 2 years ago
parent
commit
c84664617d
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 6
      electrum/gui/qml/qeinvoice.py

6
electrum/gui/qml/qeinvoice.py

@ -301,7 +301,7 @@ class QEInvoice(QObject, QtEventListener):
if amount.isEmpty and self.status == PR_UNPAID: # unspecified amount
return
def userinfo_for_invoice_status(status):
def userinfo_for_invoice_status(status: int) -> str:
return {
PR_EXPIRED: _('This invoice has expired'),
PR_PAID: _('This invoice was already paid'),
@ -324,13 +324,13 @@ class QEInvoice(QObject, QtEventListener):
# TODO: subtract fee?
self.userinfo = _('Insufficient balance')
else:
self.userinfo = userinfo_for_invoice_status([self.status])
self.userinfo = userinfo_for_invoice_status(self.status)
elif self.invoiceType == QEInvoice.Type.OnchainInvoice:
if self.status in [PR_UNPAID, PR_FAILED]:
if not ((amount.isMax and self.get_max_spendable_onchain() > 0) or (self.get_max_spendable_onchain() >= amount.satsInt)):
self.userinfo = _('Insufficient balance')
else:
self.userinfo = userinfo_for_invoice_status([self.status])
self.userinfo = userinfo_for_invoice_status(self.status)
def determine_can_pay(self):
self.canPay = False

Loading…
Cancel
Save