Qt: show amounts sent to channels in show_transaction
This commit is contained in:
@@ -376,6 +376,15 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
||||
exp_n = tx_details.mempool_depth_bytes
|
||||
amount, fee = tx_details.amount, tx_details.fee
|
||||
size = self.tx.estimated_size()
|
||||
txid = self.tx.txid()
|
||||
lnworker_history = self.wallet.lnworker.get_onchain_history() if self.wallet.lnworker else {}
|
||||
if txid in lnworker_history:
|
||||
item = lnworker_history[txid]
|
||||
ln_amount = item['amount_msat'] / 1000
|
||||
if amount is None:
|
||||
tx_mined_status = self.wallet.lnworker.lnwatcher.get_tx_height(txid)
|
||||
else:
|
||||
ln_amount = None
|
||||
self.broadcast_button.setEnabled(tx_details.can_broadcast)
|
||||
can_sign = not self.tx.is_complete() and \
|
||||
(self.wallet.can_sign(self.tx) or bool(self.external_keypairs))
|
||||
@@ -409,12 +418,18 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
||||
else:
|
||||
self.block_hash_label.hide()
|
||||
self.block_height_label.hide()
|
||||
if amount is None:
|
||||
if amount is None and ln_amount is None:
|
||||
amount_str = _("Transaction unrelated to your wallet")
|
||||
elif amount is None:
|
||||
amount_str = ''
|
||||
elif amount > 0:
|
||||
amount_str = _("Amount received:") + ' %s'% format_amount(amount) + ' ' + base_unit
|
||||
else:
|
||||
amount_str = _("Amount sent:") + ' %s'% format_amount(-amount) + ' ' + base_unit
|
||||
if amount_str:
|
||||
self.amount_label.setText(amount_str)
|
||||
else:
|
||||
self.amount_label.hide()
|
||||
size_str = _("Size:") + ' %d bytes'% size
|
||||
fee_str = _("Fee") + ': %s' % (format_amount(fee) + ' ' + base_unit if fee is not None else _('unknown'))
|
||||
if fee is not None:
|
||||
@@ -427,10 +442,18 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
||||
risk_of_burning_coins = (can_sign and fee is not None
|
||||
and self.tx.is_there_risk_of_burning_coins_as_fees())
|
||||
self.fee_warning_icon.setVisible(risk_of_burning_coins)
|
||||
self.amount_label.setText(amount_str)
|
||||
self.fee_label.setText(fee_str)
|
||||
self.size_label.setText(size_str)
|
||||
|
||||
if ln_amount is None:
|
||||
ln_amount_str = ''
|
||||
elif ln_amount > 0:
|
||||
ln_amount_str = _('Amount received in channels') + ': ' + format_amount(ln_amount) + ' ' + base_unit
|
||||
elif ln_amount < 0:
|
||||
ln_amount_str = _('Amount withdrawn from channels') + ': ' + format_amount(-ln_amount) + ' ' + base_unit
|
||||
if ln_amount_str:
|
||||
self.ln_amount_label.setText(ln_amount_str)
|
||||
else:
|
||||
self.ln_amount_label.hide()
|
||||
show_psbt_only_widgets = self.finalized and isinstance(self.tx, PartialTransaction)
|
||||
for widget in self.psbt_only_widgets:
|
||||
if isinstance(widget, QMenu):
|
||||
@@ -521,6 +544,8 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
||||
vbox_left.addWidget(self.date_label)
|
||||
self.amount_label = TxDetailLabel()
|
||||
vbox_left.addWidget(self.amount_label)
|
||||
self.ln_amount_label = TxDetailLabel()
|
||||
vbox_left.addWidget(self.ln_amount_label)
|
||||
|
||||
fee_hbox = QHBoxLayout()
|
||||
self.fee_label = TxDetailLabel()
|
||||
@@ -561,8 +586,6 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
||||
|
||||
self.locktime_label = TxDetailLabel()
|
||||
vbox_right.addWidget(self.locktime_label)
|
||||
self.block_hash_label = TxDetailLabel(word_wrap=True)
|
||||
vbox_right.addWidget(self.block_hash_label)
|
||||
self.block_height_label = TxDetailLabel()
|
||||
vbox_right.addWidget(self.block_height_label)
|
||||
vbox_right.addStretch(1)
|
||||
@@ -570,6 +593,9 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
||||
|
||||
vbox.addLayout(hbox_stats)
|
||||
|
||||
self.block_hash_label = TxDetailLabel(word_wrap=True)
|
||||
vbox.addWidget(self.block_hash_label)
|
||||
|
||||
# set visibility after parenting can be determined by Qt
|
||||
self.rbf_label.setVisible(self.finalized)
|
||||
self.rbf_cb.setVisible(not self.finalized)
|
||||
|
||||
@@ -495,8 +495,8 @@ class LNWallet(LNWorker):
|
||||
'rhash': lnaddr.paymenthash.hex(),
|
||||
}
|
||||
|
||||
def get_history(self):
|
||||
out = []
|
||||
def get_lightning_history(self):
|
||||
out = {}
|
||||
for key, plist in self.get_settled_payments().items():
|
||||
if len(plist) == 0:
|
||||
continue
|
||||
@@ -524,7 +524,6 @@ class LNWallet(LNWorker):
|
||||
|
||||
payment_hash = bytes.fromhex(key)
|
||||
preimage = self.get_preimage(payment_hash).hex()
|
||||
|
||||
item = {
|
||||
'type': 'payment',
|
||||
'label': label,
|
||||
@@ -536,7 +535,11 @@ class LNWallet(LNWorker):
|
||||
'payment_hash': key,
|
||||
'preimage': preimage,
|
||||
}
|
||||
out.append(item)
|
||||
out[payment_hash] = item
|
||||
return out
|
||||
|
||||
def get_onchain_history(self):
|
||||
out = {}
|
||||
# add funding events
|
||||
with self.lock:
|
||||
channels = list(self.channels.values())
|
||||
@@ -555,7 +558,7 @@ class LNWallet(LNWorker):
|
||||
'timestamp': funding_timestamp,
|
||||
'fee_msat': None,
|
||||
}
|
||||
out.append(item)
|
||||
out[funding_txid] = item
|
||||
if not chan.is_closed():
|
||||
continue
|
||||
assert closing_txid
|
||||
@@ -569,7 +572,11 @@ class LNWallet(LNWorker):
|
||||
'timestamp': closing_timestamp,
|
||||
'fee_msat': None,
|
||||
}
|
||||
out.append(item)
|
||||
out[closing_txid] = item
|
||||
return out
|
||||
|
||||
def get_history(self):
|
||||
out = list(self.get_lightning_history().values()) + list(self.get_onchain_history().values())
|
||||
# sort by timestamp
|
||||
out.sort(key=lambda x: (x.get('timestamp') or float("inf")))
|
||||
balance_msat = 0
|
||||
|
||||
Reference in New Issue
Block a user