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