submarine swaps: improve labels
- claim tx was incorrectly labeled - if we send tx change to a swap, display both labels
This commit is contained in:
@@ -1044,10 +1044,8 @@ class LNWallet(LNWorker):
|
|||||||
if swap:
|
if swap:
|
||||||
if swap.is_reverse:
|
if swap.is_reverse:
|
||||||
item['group_id'] = swap.spending_txid
|
item['group_id'] = swap.spending_txid
|
||||||
item['group_label'] = 'Reverse swap' + ' ' + self.config.format_amount_and_units(swap.lightning_amount)
|
|
||||||
else:
|
else:
|
||||||
item['group_id'] = swap.funding_txid
|
item['group_id'] = swap.funding_txid
|
||||||
item['group_label'] = 'Forward swap' + ' ' + self.config.format_amount_and_units(swap.onchain_amount)
|
|
||||||
# done
|
# done
|
||||||
out[payment_hash] = item
|
out[payment_hash] = item
|
||||||
return out
|
return out
|
||||||
@@ -1119,7 +1117,14 @@ class LNWallet(LNWorker):
|
|||||||
direction, amount_msat, fee_msat, timestamp = self.get_payment_value(info, plist)
|
direction, amount_msat, fee_msat, timestamp = self.get_payment_value(info, plist)
|
||||||
else:
|
else:
|
||||||
amount_msat = 0
|
amount_msat = 0
|
||||||
label = 'Reverse swap' if swap.is_reverse else 'Forward swap'
|
|
||||||
|
if swap.is_reverse:
|
||||||
|
group_label = 'Reverse swap' + ' ' + self.config.format_amount_and_units(swap.lightning_amount)
|
||||||
|
else:
|
||||||
|
group_label = 'Forward swap' + ' ' + self.config.format_amount_and_units(swap.onchain_amount)
|
||||||
|
self._labels_cache[txid] = group_label
|
||||||
|
|
||||||
|
label = _('Claim transaction') if swap.is_reverse else _('Funding transaction')
|
||||||
delta = current_height - swap.locktime
|
delta = current_height - swap.locktime
|
||||||
if self.wallet.adb.is_mine(swap.lockup_address):
|
if self.wallet.adb.is_mine(swap.lockup_address):
|
||||||
tx_height = self.wallet.adb.get_tx_height(swap.funding_txid)
|
tx_height = self.wallet.adb.get_tx_height(swap.funding_txid)
|
||||||
@@ -1127,12 +1132,11 @@ class LNWallet(LNWorker):
|
|||||||
label += ' (%s)' % _('waiting for funding tx confirmation')
|
label += ' (%s)' % _('waiting for funding tx confirmation')
|
||||||
if not swap.is_reverse and not swap.is_redeemed and swap.spending_txid is None and delta < 0:
|
if not swap.is_reverse and not swap.is_redeemed and swap.spending_txid is None and delta < 0:
|
||||||
label += f' (refundable in {-delta} blocks)' # fixme: only if unspent
|
label += f' (refundable in {-delta} blocks)' # fixme: only if unspent
|
||||||
self._labels_cache[txid] = label
|
|
||||||
out[txid] = {
|
out[txid] = {
|
||||||
'group_id': txid,
|
'group_id': txid,
|
||||||
'amount_msat': 0, # must be zero for onchain tx
|
'amount_msat': 0, # must be zero for onchain tx
|
||||||
'type': 'swap',
|
'type': 'swap',
|
||||||
'label': _('Funding transaction'),
|
'label': label,
|
||||||
}
|
}
|
||||||
if not swap.is_reverse:
|
if not swap.is_reverse:
|
||||||
# if the spending_tx is in the wallet, this will add it
|
# if the spending_tx is in the wallet, this will add it
|
||||||
|
|||||||
@@ -1292,9 +1292,10 @@ class Abstract_Wallet(ABC, Logger, EventListener):
|
|||||||
else:
|
else:
|
||||||
key = 'group:' + group_id
|
key = 'group:' + group_id
|
||||||
parent = transactions.get(key)
|
parent = transactions.get(key)
|
||||||
|
label = self.get_label_for_txid(group_id)
|
||||||
if parent is None:
|
if parent is None:
|
||||||
parent = {
|
parent = {
|
||||||
'label': tx_item.get('group_label'),
|
'label': label,
|
||||||
'fiat_value': Fiat(Decimal(0), fx.ccy) if fx else None,
|
'fiat_value': Fiat(Decimal(0), fx.ccy) if fx else None,
|
||||||
'bc_value': Satoshis(0),
|
'bc_value': Satoshis(0),
|
||||||
'ln_value': Satoshis(0),
|
'ln_value': Satoshis(0),
|
||||||
@@ -1527,24 +1528,22 @@ class Abstract_Wallet(ABC, Logger, EventListener):
|
|||||||
return self._labels.get(tx_hash) or self._get_default_label_for_txid(tx_hash)
|
return self._labels.get(tx_hash) or self._get_default_label_for_txid(tx_hash)
|
||||||
|
|
||||||
def _get_default_label_for_txid(self, tx_hash: str) -> str:
|
def _get_default_label_for_txid(self, tx_hash: str) -> str:
|
||||||
if self.lnworker and (label:= self.lnworker.get_label_for_txid(tx_hash)):
|
labels = []
|
||||||
return label
|
|
||||||
# note: we don't deserialize tx as the history calls us for every tx, and that would be slow
|
# note: we don't deserialize tx as the history calls us for every tx, and that would be slow
|
||||||
if not self.db.get_txi_addresses(tx_hash):
|
if not self.db.get_txi_addresses(tx_hash):
|
||||||
# no inputs are ismine -> likely incoming payment -> concat labels of output addresses
|
# no inputs are ismine -> likely incoming payment -> concat labels of output addresses
|
||||||
labels = []
|
|
||||||
for addr in self.db.get_txo_addresses(tx_hash):
|
for addr in self.db.get_txo_addresses(tx_hash):
|
||||||
label = self.get_label_for_address(addr)
|
label = self.get_label_for_address(addr)
|
||||||
if label:
|
if label:
|
||||||
labels.append(label)
|
labels.append(label)
|
||||||
return ', '.join(labels)
|
|
||||||
else:
|
else:
|
||||||
# some inputs are ismine -> likely outgoing payment
|
# some inputs are ismine -> likely outgoing payment
|
||||||
labels = []
|
|
||||||
for invoice in self.get_relevant_invoices_for_tx(tx_hash):
|
for invoice in self.get_relevant_invoices_for_tx(tx_hash):
|
||||||
if invoice.message:
|
if invoice.message:
|
||||||
labels.append(invoice.message)
|
labels.append(invoice.message)
|
||||||
return ', '.join(labels)
|
if not labels and self.lnworker and (label:= self.lnworker.get_label_for_txid(tx_hash)):
|
||||||
|
labels.append(label)
|
||||||
|
return ', '.join(labels)
|
||||||
|
|
||||||
def _get_default_label_for_rhash(self, rhash: str) -> str:
|
def _get_default_label_for_rhash(self, rhash: str) -> str:
|
||||||
req = self.get_request(rhash)
|
req = self.get_request(rhash)
|
||||||
|
|||||||
Reference in New Issue
Block a user