From d9f77a50e8fbd907cf0c3a52a329a5133d6fc5d4 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Fri, 26 Aug 2022 10:47:13 +0200 Subject: [PATCH] wallet API: remove get_request_status, it is redundant with get_invoice_status --- electrum/commands.py | 2 +- electrum/gui/kivy/uix/screens.py | 4 ++-- electrum/gui/qml/qerequestdetails.py | 3 ++- electrum/gui/qt/request_list.py | 4 ++-- electrum/gui/text.py | 2 +- electrum/wallet.py | 31 ++++++---------------------- 6 files changed, 14 insertions(+), 32 deletions(-) diff --git a/electrum/commands.py b/electrum/commands.py index 3fd59a96b..4e029301b 100644 --- a/electrum/commands.py +++ b/electrum/commands.py @@ -906,7 +906,7 @@ class Commands: out = wallet.get_sorted_requests() if f is not None: out = [req for req in out - if f == wallet.get_request_status(wallet.get_key_for_receive_request(req))] + if f == wallet.get_invoice_status(req)] return [wallet.export_request(x) for x in out] @command('w') diff --git a/electrum/gui/kivy/uix/screens.py b/electrum/gui/kivy/uix/screens.py index 60c422f98..62a57c1cb 100644 --- a/electrum/gui/kivy/uix/screens.py +++ b/electrum/gui/kivy/uix/screens.py @@ -542,7 +542,7 @@ class ReceiveScreen(CScreen): key = self.app.wallet.get_key_for_receive_request(req) amount = req.get_amount_sat() description = req.message - status = self.app.wallet.get_request_status(key) + status = self.app.wallet.get_invoice_status(req) status_str = req.get_status_str(status) ci = {} ci['screen'] = self @@ -568,7 +568,7 @@ class ReceiveScreen(CScreen): data = payments_container.data for item in data: if item['key'] == key: - status = self.app.wallet.get_request_status(key) + status = self.app.wallet.get_invoice_status(request) status_str = request.get_status_str(status) item['status'] = status item['status_str'] = status_str diff --git a/electrum/gui/qml/qerequestdetails.py b/electrum/gui/qml/qerequestdetails.py index 72938f9ce..8b043437d 100644 --- a/electrum/gui/qml/qerequestdetails.py +++ b/electrum/gui/qml/qerequestdetails.py @@ -64,7 +64,8 @@ class QERequestDetails(QObject): statusChanged = pyqtSignal() @pyqtProperty(int, notify=statusChanged) def status(self): - return self._wallet.wallet.get_request_status(self._key) + req = self._wallet.get_request(self._key) + return self._wallet.wallet.get_invoice_status(req) statusStringChanged = pyqtSignal() @pyqtProperty(str, notify=statusStringChanged) diff --git a/electrum/gui/qt/request_list.py b/electrum/gui/qt/request_list.py index b3914d4ab..5685e95f5 100644 --- a/electrum/gui/qt/request_list.py +++ b/electrum/gui/qt/request_list.py @@ -114,7 +114,7 @@ class RequestList(MyTreeView): if request is None: return status_item = model.item(row, self.Columns.STATUS) - status = self.wallet.get_request_status(key) + status = self.wallet.get_invoice_status(request) status_str = request.get_status_str(status) status_item.setText(status_str) status_item.setIcon(read_QIcon(pr_icons.get(status))) @@ -127,7 +127,7 @@ class RequestList(MyTreeView): self.update_headers(self.__class__.headers) for req in self.wallet.get_unpaid_requests(): key = self.wallet.get_key_for_receive_request(req) - status = self.wallet.get_request_status(key) + status = self.wallet.get_invoice_status(req) status_str = req.get_status_str(status) timestamp = req.get_time() amount = req.get_amount_sat() diff --git a/electrum/gui/text.py b/electrum/gui/text.py index 34e349c15..e3a29d66a 100644 --- a/electrum/gui/text.py +++ b/electrum/gui/text.py @@ -288,7 +288,7 @@ class ElectrumGui(BaseElectrumGui, EventListener): headers = fmt % ("Date", "Description", "Amount", "Status") for req in self.wallet.get_unpaid_requests(): key = self.wallet.get_key_for_receive_request(req) - status = self.wallet.get_request_status(key) + status = self.wallet.get_invoice_status(req) status_str = req.get_status_str(status) timestamp = req.get_time() date = format_time(timestamp) diff --git a/electrum/wallet.py b/electrum/wallet.py index ea9a7fa56..e4501b995 100644 --- a/electrum/wallet.py +++ b/electrum/wallet.py @@ -2324,7 +2324,7 @@ class Abstract_Wallet(ABC, Logger, EventListener): return status def get_invoice_status(self, invoice: Invoice): - """Returns status of (outgoing) invoice.""" + """Returns status of (incoming) request or (outgoing) invoice.""" # lightning invoices can be paid onchain if invoice.is_lightning() and self.lnworker: status = self.lnworker.get_invoice_status(invoice) @@ -2340,25 +2340,6 @@ class Abstract_Wallet(ABC, Logger, EventListener): status = PR_PAID return self.check_expired_status(invoice, status) - def get_request_status(self, key): - """Returns status of (incoming) receive request.""" - r = self.get_request(key) - if r is None: - return PR_UNKNOWN - if r.is_lightning() and self.lnworker: - status = self.lnworker.get_payment_status(bfh(r.rhash)) - if status != PR_UNPAID: - return self.check_expired_status(r, status) - paid, conf = self.is_onchain_invoice_paid(r) - if not paid: - status = PR_UNPAID - elif conf == 0: - status = PR_UNCONFIRMED - else: - assert conf >= 1, conf - status = PR_PAID - return self.check_expired_status(r, status) - def get_request(self, key: str) -> Optional[Invoice]: if req := self._receive_requests.get(key): return req @@ -2373,7 +2354,7 @@ class Abstract_Wallet(ABC, Logger, EventListener): def export_request(self, x: Invoice) -> Dict[str, Any]: key = self.get_key_for_receive_request(x) - status = self.get_request_status(key) + status = self.get_invoice_status(x) status_str = x.get_status_str(status) is_lightning = x.is_lightning() address = x.get_address() @@ -2451,7 +2432,8 @@ class Abstract_Wallet(ABC, Logger, EventListener): for txo in tx.outputs(): addr = txo.address if self.get_request(addr): - status = self.get_request_status(addr) + req = self.get_request(addr) + status = self.get_invoice_status(req) util.trigger_callback('request_status', self, addr, status) for invoice_key in self._invoices_from_scriptpubkey_map.get(txo.scriptpubkey, set()): relevant_invoice_keys.add(invoice_key) @@ -2563,8 +2545,7 @@ class Abstract_Wallet(ABC, Logger, EventListener): return out def get_unpaid_requests(self): - out = [self.get_request(x) for x in self._receive_requests.keys() if self.get_request_status(x) != PR_PAID] - out = [x for x in out if x is not None] + out = [x for x in self._receive_requests.values() if self.get_invoice_status(x) != PR_PAID] out.sort(key=lambda x: x.time) return out @@ -2846,7 +2827,7 @@ class Abstract_Wallet(ABC, Logger, EventListener): URI = self.get_request_URI(req) or '' lightning_online = self.lnworker and self.lnworker.num_peers() > 0 can_receive_lightning = self.lnworker and amount_sat <= self.lnworker.num_sats_can_receive() - status = self.get_request_status(key) + status = self.get_invoice_status(req) if status == PR_EXPIRED: address_help = URI_help = ln_help = _('This request has expired')