diff --git a/electrum/gui/qml/qerequestdetails.py b/electrum/gui/qml/qerequestdetails.py index f957fad62..855b9feb9 100644 --- a/electrum/gui/qml/qerequestdetails.py +++ b/electrum/gui/qml/qerequestdetails.py @@ -1,3 +1,5 @@ +from typing import Optional + from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QTimer, Q_ENUMS from electrum.logging import get_logger @@ -8,6 +10,7 @@ from .qewallet import QEWallet from .qetypes import QEAmount from .util import QtEventListener, event_listener, status_update_timer_interval + class QERequestDetails(QObject, QtEventListener): class Status: @@ -30,7 +33,7 @@ class QERequestDetails(QObject, QtEventListener): def __init__(self, parent=None): super().__init__(parent) - self._wallet = None + self._wallet = None # type: Optional[QEWallet] self._key = None self._req = None self._timer = None @@ -118,9 +121,13 @@ class QERequestDetails(QObject, QtEventListener): def bolt11(self): can_receive = self._wallet.wallet.lnworker.num_sats_can_receive() if self._wallet.wallet.lnworker else 0 if self._req and can_receive > 0 and (self._req.get_amount_sat() or 0) <= can_receive: - return self._wallet.wallet.get_bolt11_invoice(self._req) + bolt11 = self._wallet.wallet.get_bolt11_invoice(self._req) else: return '' + # encode lightning invoices as uppercase so QR encoding can use + # alphanumeric mode; resulting in smaller QR codes + bolt11 = bolt11.upper() + return bolt11 @pyqtProperty(str, notify=detailsChanged) def bip21(self):