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() out = wallet.get_sorted_requests()
if f is not None: if f is not None:
out = [req for req in out 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] return [wallet.export_request(x) for x in out]
@command('w') @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) key = self.app.wallet.get_key_for_receive_request(req)
amount = req.get_amount_sat() amount = req.get_amount_sat()
description = req.message 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) status_str = req.get_status_str(status)
ci = {} ci = {}
ci['screen'] = self ci['screen'] = self
@ -568,7 +568,7 @@ class ReceiveScreen(CScreen):
data = payments_container.data data = payments_container.data
for item in data: for item in data:
if item['key'] == key: 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) status_str = request.get_status_str(status)
item['status'] = status item['status'] = status
item['status_str'] = status_str item['status_str'] = status_str

3
electrum/gui/qml/qerequestdetails.py

@ -64,7 +64,8 @@ class QERequestDetails(QObject):
statusChanged = pyqtSignal() statusChanged = pyqtSignal()
@pyqtProperty(int, notify=statusChanged) @pyqtProperty(int, notify=statusChanged)
def status(self): 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() statusStringChanged = pyqtSignal()
@pyqtProperty(str, notify=statusStringChanged) @pyqtProperty(str, notify=statusStringChanged)

4
electrum/gui/qt/request_list.py

@ -114,7 +114,7 @@ class RequestList(MyTreeView):
if request is None: if request is None:
return return
status_item = model.item(row, self.Columns.STATUS) 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_str = request.get_status_str(status)
status_item.setText(status_str) status_item.setText(status_str)
status_item.setIcon(read_QIcon(pr_icons.get(status))) status_item.setIcon(read_QIcon(pr_icons.get(status)))
@ -127,7 +127,7 @@ class RequestList(MyTreeView):
self.update_headers(self.__class__.headers) self.update_headers(self.__class__.headers)
for req in self.wallet.get_unpaid_requests(): for req in self.wallet.get_unpaid_requests():
key = self.wallet.get_key_for_receive_request(req) 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) status_str = req.get_status_str(status)
timestamp = req.get_time() timestamp = req.get_time()
amount = req.get_amount_sat() amount = req.get_amount_sat()

2
electrum/gui/text.py

@ -288,7 +288,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
headers = fmt % ("Date", "Description", "Amount", "Status") headers = fmt % ("Date", "Description", "Amount", "Status")
for req in self.wallet.get_unpaid_requests(): for req in self.wallet.get_unpaid_requests():
key = self.wallet.get_key_for_receive_request(req) 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) status_str = req.get_status_str(status)
timestamp = req.get_time() timestamp = req.get_time()
date = format_time(timestamp) date = format_time(timestamp)

31
electrum/wallet.py

@ -2324,7 +2324,7 @@ class Abstract_Wallet(ABC, Logger, EventListener):
return status return status
def get_invoice_status(self, invoice: Invoice): 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 # lightning invoices can be paid onchain
if invoice.is_lightning() and self.lnworker: if invoice.is_lightning() and self.lnworker:
status = self.lnworker.get_invoice_status(invoice) status = self.lnworker.get_invoice_status(invoice)
@ -2340,25 +2340,6 @@ class Abstract_Wallet(ABC, Logger, EventListener):
status = PR_PAID status = PR_PAID
return self.check_expired_status(invoice, status) 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]: def get_request(self, key: str) -> Optional[Invoice]:
if req := self._receive_requests.get(key): if req := self._receive_requests.get(key):
return req return req
@ -2373,7 +2354,7 @@ class Abstract_Wallet(ABC, Logger, EventListener):
def export_request(self, x: Invoice) -> Dict[str, Any]: def export_request(self, x: Invoice) -> Dict[str, Any]:
key = self.get_key_for_receive_request(x) 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) status_str = x.get_status_str(status)
is_lightning = x.is_lightning() is_lightning = x.is_lightning()
address = x.get_address() address = x.get_address()
@ -2451,7 +2432,8 @@ class Abstract_Wallet(ABC, Logger, EventListener):
for txo in tx.outputs(): for txo in tx.outputs():
addr = txo.address addr = txo.address
if self.get_request(addr): 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) util.trigger_callback('request_status', self, addr, status)
for invoice_key in self._invoices_from_scriptpubkey_map.get(txo.scriptpubkey, set()): for invoice_key in self._invoices_from_scriptpubkey_map.get(txo.scriptpubkey, set()):
relevant_invoice_keys.add(invoice_key) relevant_invoice_keys.add(invoice_key)
@ -2563,8 +2545,7 @@ class Abstract_Wallet(ABC, Logger, EventListener):
return out return out
def get_unpaid_requests(self): 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 self._receive_requests.values() if self.get_invoice_status(x) != PR_PAID]
out = [x for x in out if x is not None]
out.sort(key=lambda x: x.time) out.sort(key=lambda x: x.time)
return out return out
@ -2846,7 +2827,7 @@ class Abstract_Wallet(ABC, Logger, EventListener):
URI = self.get_request_URI(req) or '' URI = self.get_request_URI(req) or ''
lightning_online = self.lnworker and self.lnworker.num_peers() > 0 lightning_online = self.lnworker and self.lnworker.num_peers() > 0
can_receive_lightning = self.lnworker and amount_sat <= self.lnworker.num_sats_can_receive() 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: if status == PR_EXPIRED:
address_help = URI_help = ln_help = _('This request has expired') address_help = URI_help = ln_help = _('This request has expired')

Loading…
Cancel
Save