Use attr.s classes for invoices and requests:
- storage upgrade - fixes #6192 - add can_pay_invoice, can_receive_invoice to lnworker
This commit is contained in:
@@ -43,6 +43,7 @@ from typing import NamedTuple, Optional
|
||||
import ssl
|
||||
import ipaddress
|
||||
import random
|
||||
import attr
|
||||
|
||||
import aiohttp
|
||||
from aiohttp_socks import ProxyConnector, ProxyType
|
||||
@@ -77,66 +78,6 @@ base_units_list = ['BTC', 'mBTC', 'bits', 'sat'] # list(dict) does not guarante
|
||||
|
||||
DECIMAL_POINT_DEFAULT = 5 # mBTC
|
||||
|
||||
# types of payment requests
|
||||
PR_TYPE_ONCHAIN = 0
|
||||
PR_TYPE_LN = 2
|
||||
|
||||
# status of payment requests
|
||||
PR_UNPAID = 0
|
||||
PR_EXPIRED = 1
|
||||
PR_UNKNOWN = 2 # sent but not propagated
|
||||
PR_PAID = 3 # send and propagated
|
||||
PR_INFLIGHT = 4 # unconfirmed
|
||||
PR_FAILED = 5
|
||||
PR_ROUTING = 6
|
||||
|
||||
pr_color = {
|
||||
PR_UNPAID: (.7, .7, .7, 1),
|
||||
PR_PAID: (.2, .9, .2, 1),
|
||||
PR_UNKNOWN: (.7, .7, .7, 1),
|
||||
PR_EXPIRED: (.9, .2, .2, 1),
|
||||
PR_INFLIGHT: (.9, .6, .3, 1),
|
||||
PR_FAILED: (.9, .2, .2, 1),
|
||||
PR_ROUTING: (.9, .6, .3, 1),
|
||||
}
|
||||
|
||||
pr_tooltips = {
|
||||
PR_UNPAID:_('Pending'),
|
||||
PR_PAID:_('Paid'),
|
||||
PR_UNKNOWN:_('Unknown'),
|
||||
PR_EXPIRED:_('Expired'),
|
||||
PR_INFLIGHT:_('In progress'),
|
||||
PR_FAILED:_('Failed'),
|
||||
PR_ROUTING: _('Computing route...'),
|
||||
}
|
||||
|
||||
PR_DEFAULT_EXPIRATION_WHEN_CREATING = 24*60*60 # 1 day
|
||||
pr_expiration_values = {
|
||||
0: _('Never'),
|
||||
10*60: _('10 minutes'),
|
||||
60*60: _('1 hour'),
|
||||
24*60*60: _('1 day'),
|
||||
7*24*60*60: _('1 week'),
|
||||
}
|
||||
assert PR_DEFAULT_EXPIRATION_WHEN_CREATING in pr_expiration_values
|
||||
|
||||
|
||||
def get_request_status(req):
|
||||
status = req['status']
|
||||
exp = req.get('exp', 0) or 0
|
||||
if req.get('type') == PR_TYPE_LN and exp == 0:
|
||||
status = PR_EXPIRED # for BOLT-11 invoices, exp==0 means 0 seconds
|
||||
if req['status'] == PR_UNPAID and exp > 0 and req['time'] + req['exp'] < time.time():
|
||||
status = PR_EXPIRED
|
||||
status_str = pr_tooltips[status]
|
||||
if status == PR_UNPAID:
|
||||
if exp > 0:
|
||||
expiration = exp + req['time']
|
||||
status_str = _('Expires') + ' ' + age(expiration, include_seconds=True)
|
||||
else:
|
||||
status_str = _('Pending')
|
||||
return status, status_str
|
||||
|
||||
|
||||
class UnknownBaseUnit(Exception): pass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user