Browse Source

wallet API: remove get_request_status, it is redundant with get_invoice_status

patch-4
ThomasV 3 years ago
parent
commit
d9f77a50e8
  1. 2
      electrum/commands.py
  2. 4
      electrum/gui/kivy/uix/screens.py
  3. 3
      electrum/gui/qml/qerequestdetails.py
  4. 4
      electrum/gui/qt/request_list.py
  5. 2
      electrum/gui/text.py
  6. 31
      electrum/wallet.py

2
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')

4
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

3
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)

4
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()

2
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)

31
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')

Loading…
Cancel
Save