qml: invoicemodel and requestmodel update invoice status via event listener
This commit is contained in:
@@ -7,6 +7,7 @@ from electrum.logging import get_logger
|
|||||||
from electrum.util import Satoshis, format_time
|
from electrum.util import Satoshis, format_time
|
||||||
from electrum.invoices import Invoice
|
from electrum.invoices import Invoice
|
||||||
|
|
||||||
|
from .util import QtEventListener, qt_event_listener
|
||||||
from .qetypes import QEAmount
|
from .qetypes import QEAmount
|
||||||
|
|
||||||
class QEAbstractInvoiceListModel(QAbstractListModel):
|
class QEAbstractInvoiceListModel(QAbstractListModel):
|
||||||
@@ -52,7 +53,6 @@ class QEAbstractInvoiceListModel(QAbstractListModel):
|
|||||||
invoices = []
|
invoices = []
|
||||||
for invoice in self.get_invoice_list():
|
for invoice in self.get_invoice_list():
|
||||||
item = self.invoice_to_model(invoice)
|
item = self.invoice_to_model(invoice)
|
||||||
#self._logger.debug(str(item))
|
|
||||||
invoices.append(item)
|
invoices.append(item)
|
||||||
|
|
||||||
self.clear()
|
self.clear()
|
||||||
@@ -128,12 +128,29 @@ class QEAbstractInvoiceListModel(QAbstractListModel):
|
|||||||
raise Exception('provide impl')
|
raise Exception('provide impl')
|
||||||
|
|
||||||
|
|
||||||
class QEInvoiceListModel(QEAbstractInvoiceListModel):
|
class QEInvoiceListModel(QEAbstractInvoiceListModel, QtEventListener):
|
||||||
def __init__(self, wallet, parent=None):
|
def __init__(self, wallet, parent=None):
|
||||||
super().__init__(wallet, parent)
|
super().__init__(wallet, parent)
|
||||||
|
self.register_callbacks()
|
||||||
|
self.destroyed.connect(lambda: self.on_destroy())
|
||||||
|
|
||||||
_logger = get_logger(__name__)
|
_logger = get_logger(__name__)
|
||||||
|
|
||||||
|
def on_destroy(self):
|
||||||
|
self.unregister_callbacks()
|
||||||
|
|
||||||
|
@qt_event_listener
|
||||||
|
def on_event_invoice_status(self, wallet, key):
|
||||||
|
if wallet == self.wallet:
|
||||||
|
self._logger.debug('invoice status update for key %s' % key)
|
||||||
|
# FIXME event doesn't pass the new status, so we need to retrieve
|
||||||
|
invoice = self.wallet.get_invoice(key)
|
||||||
|
if invoice:
|
||||||
|
status = self.wallet.get_invoice_status(invoice)
|
||||||
|
self.updateInvoice(key, status)
|
||||||
|
else:
|
||||||
|
self._logger.debug(f'No invoice found for key {key}')
|
||||||
|
|
||||||
def invoice_to_model(self, invoice: Invoice):
|
def invoice_to_model(self, invoice: Invoice):
|
||||||
item = super().invoice_to_model(invoice)
|
item = super().invoice_to_model(invoice)
|
||||||
item['type'] = 'invoice'
|
item['type'] = 'invoice'
|
||||||
@@ -150,12 +167,23 @@ class QEInvoiceListModel(QEAbstractInvoiceListModel):
|
|||||||
def get_invoice_as_dict(self, invoice: Invoice):
|
def get_invoice_as_dict(self, invoice: Invoice):
|
||||||
return self.wallet.export_invoice(invoice)
|
return self.wallet.export_invoice(invoice)
|
||||||
|
|
||||||
class QERequestListModel(QEAbstractInvoiceListModel):
|
class QERequestListModel(QEAbstractInvoiceListModel, QtEventListener):
|
||||||
def __init__(self, wallet, parent=None):
|
def __init__(self, wallet, parent=None):
|
||||||
super().__init__(wallet, parent)
|
super().__init__(wallet, parent)
|
||||||
|
self.register_callbacks()
|
||||||
|
self.destroyed.connect(lambda: self.on_destroy())
|
||||||
|
|
||||||
_logger = get_logger(__name__)
|
_logger = get_logger(__name__)
|
||||||
|
|
||||||
|
def on_destroy(self):
|
||||||
|
self.unregister_callbacks()
|
||||||
|
|
||||||
|
@qt_event_listener
|
||||||
|
def on_event_request_status(self, wallet, key, status):
|
||||||
|
if wallet == self.wallet:
|
||||||
|
self._logger.debug('request status update for key %s' % key)
|
||||||
|
self.updateRequest(key, status)
|
||||||
|
|
||||||
def invoice_to_model(self, invoice: Invoice):
|
def invoice_to_model(self, invoice: Invoice):
|
||||||
item = super().invoice_to_model(invoice)
|
item = super().invoice_to_model(invoice)
|
||||||
item['type'] = 'request'
|
item['type'] = 'request'
|
||||||
|
|||||||
Reference in New Issue
Block a user