diff --git a/electrum/gui/qml/components/ConfirmInvoiceDialog.qml b/electrum/gui/qml/components/ConfirmInvoiceDialog.qml index f1c4bf3ef..7f3b447c5 100644 --- a/electrum/gui/qml/components/ConfirmInvoiceDialog.qml +++ b/electrum/gui/qml/components/ConfirmInvoiceDialog.qml @@ -86,13 +86,11 @@ Dialog { } Label { - text: qsTr('Expiration') - visible: true + text: qsTr('Status') } Label { - id: expiration - text: invoice.time + invoice.expiration + text: invoice.status_str } RowLayout { @@ -108,7 +106,6 @@ Dialog { Button { text: qsTr('Save') -// enabled: invoice.invoiceType != Invoice.Invalid enabled: invoice.invoiceType == Invoice.OnchainInvoice onClicked: { invoice.save_invoice() diff --git a/electrum/gui/qml/components/Send.qml b/electrum/gui/qml/components/Send.qml index aa2b07e59..cdda2be21 100644 --- a/electrum/gui/qml/components/Send.qml +++ b/electrum/gui/qml/components/Send.qml @@ -279,8 +279,6 @@ Pane { // no popups when editing return } - console.log(code + ' ' + message) - var dialog = app.messageDialog.createObject(app, {'text': message }) dialog.open() rootItem.clear() diff --git a/electrum/gui/qml/qeinvoice.py b/electrum/gui/qml/qeinvoice.py index 1dda2e42f..8dd3c6dc5 100644 --- a/electrum/gui/qml/qeinvoice.py +++ b/electrum/gui/qml/qeinvoice.py @@ -9,6 +9,8 @@ from electrum.keystore import bip39_is_checksum_valid from electrum.util import (parse_URI, create_bip21_uri, InvalidBitcoinURI, InvoiceError, maybe_extract_bolt11_invoice) from electrum.invoices import Invoice, OnchainInvoice, LNInvoice +from electrum.invoices import (PR_UNPAID,PR_EXPIRED,PR_UNKNOWN,PR_PAID,PR_INFLIGHT, + PR_FAILED,PR_ROUTING,PR_UNCONFIRMED) from electrum.transaction import PartialTxOutput from .qewallet import QEWallet @@ -25,7 +27,18 @@ class QEInvoice(QObject): LightningInvoice = 2 LightningAndOnchainInvoice = 3 + class Status: + Unpaid = PR_UNPAID + Expired = PR_EXPIRED + Unknown = PR_UNKNOWN + Paid = PR_PAID + Inflight = PR_INFLIGHT + Failed = PR_FAILED + Routing = PR_ROUTING + Unconfirmed = PR_UNCONFIRMED + Q_ENUMS(Type) + Q_ENUMS(Status) _wallet = None _invoiceType = Type.Invalid @@ -83,7 +96,7 @@ class QEInvoice(QObject): @pyqtProperty(QEAmount, notify=invoiceChanged) def amount(self): # store ref to QEAmount on instance, otherwise we get destroyed when going out of scope - self._amount = QEAmount() # + self._amount = QEAmount() if not self._effectiveInvoice: return self._amount sats = self._effectiveInvoice.get_amount_sat() @@ -100,6 +113,20 @@ class QEInvoice(QObject): def time(self): return self._effectiveInvoice.time if self._effectiveInvoice else 0 + statusChanged = pyqtSignal() + @pyqtProperty(int, notify=statusChanged) + def status(self): + if not self._effectiveInvoice: + return '' + status = self._wallet.wallet.get_invoice_status(self._effectiveInvoice) + + @pyqtProperty(str, notify=statusChanged) + def status_str(self): + if not self._effectiveInvoice: + return '' + status = self._wallet.wallet.get_invoice_status(self._effectiveInvoice) + return self._effectiveInvoice.get_status_str(status) + @pyqtSlot() def clear(self): self.recipient = '' @@ -124,6 +151,7 @@ class QEInvoice(QObject): else: self.setInvoiceType(QEInvoice.Type.OnchainInvoice) self.invoiceChanged.emit() + self.statusChanged.emit() def setValidAddressOnly(self): self._logger.debug('setValidAddressOnly') @@ -226,8 +254,8 @@ class QEInvoice(QObject): self._wallet.wallet.save_invoice(self._effectiveInvoice) self.invoiceSaved.emit() - @pyqtSlot(str, 'quint64', str) - def create_invoice(self, address: str, amount: int, message: str): + @pyqtSlot(str, QEAmount, str) + def create_invoice(self, address: str, amount: QEAmount, message: str): # create onchain invoice from user entered fields # (any other type of invoice is created from parsing recipient) self._logger.debug('saving invoice to %s' % address)