Browse Source

follow-up previous commit: show onchain tx dialog for channel open/close transactions

hard-fail-on-bad-server-string
ThomasV 5 years ago
parent
commit
6696f40e36
  1. 8
      electrum/gui/kivy/uix/screens.py
  2. 25
      electrum/gui/qt/history_list.py
  3. 2
      electrum/gui/qt/lightning_tx_dialog.py

8
electrum/gui/kivy/uix/screens.py

@ -127,10 +127,13 @@ class HistoryScreen(CScreen):
def show_item(self, obj):
key = obj.key
tx_item = self.history.get(key)
if obj.is_lightning:
if tx_item.get('lightning') and tx_item['type'] == 'payment':
self.app.lightning_tx_dialog(tx_item)
return
tx = self.app.wallet.db.get_transaction(key)
if tx_item.get('lightning'):
tx = self.app.wallet.lnworker.lnwatcher.db.get_transaction(key)
else:
tx = self.app.wallet.db.get_transaction(key)
if not tx:
return
self.app.tx_dialog(tx)
@ -160,7 +163,6 @@ class HistoryScreen(CScreen):
fee_text = '' if fee is None else 'fee: %d sat'%fee
ri = {}
ri['screen'] = self
ri['is_lightning'] = is_lightning
ri['key'] = key
ri['icon'] = icon
ri['date'] = status_str

25
electrum/gui/qt/history_list.py

@ -576,16 +576,14 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
if self.hm.flags(self.model().mapToSource(idx)) & Qt.ItemIsEditable:
super().mouseDoubleClickEvent(event)
else:
self.show_transaction(tx_item)
tx_hash = tx_item['txid']
tx = self.wallet.db.get_transaction(tx_hash)
if not tx:
return
self.show_transaction(tx_item, tx)
def show_transaction(self, tx_item):
if tx_item.get('lightning'):
self.parent.show_lightning_transaction(tx_item)
return
def show_transaction(self, tx_item, tx):
tx_hash = tx_item['txid']
tx = self.wallet.db.get_transaction(tx_hash)
if not tx:
return
label = self.wallet.get_label(tx_hash) or None # prefer 'None' if not defined (force tx dialog to hide Description field if missing)
self.parent.show_transaction(tx, tx_desc=label)
@ -608,15 +606,16 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
# can happen e.g. before list is populated for the first time
return
tx_item = self.hm.transactions.value_from_pos(idx.row())
if tx_item.get('lightning'):
if tx_item.get('lightning') and tx_item['type'] == 'payment':
menu = QMenu()
#tx_hash = tx_item['txid']
#menu.addAction(_("Copy Transaction ID"), lambda: self.place_text_on_clipboard(tx_hash, title="TXID"))
menu.addAction(_("Details"), lambda: self.parent.show_lightning_transaction(tx_item))
menu.exec_(self.viewport().mapToGlobal(position))
return
tx_hash = tx_item['txid']
tx = self.wallet.db.get_transaction(tx_hash)
if tx_item.get('lightning'):
tx = self.wallet.lnworker.lnwatcher.db.get_transaction(tx_hash)
else:
tx = self.wallet.db.get_transaction(tx_hash)
if not tx:
return
tx_URL = block_explorer_URL(self.config, 'tx', tx_hash)
@ -635,7 +634,7 @@ class HistoryList(MyTreeView, AcceptFileDragDrop):
# TODO use siblingAtColumn when min Qt version is >=5.11
persistent = QPersistentModelIndex(org_idx.sibling(org_idx.row(), c))
menu.addAction(_("Edit {}").format(label), lambda p=persistent: self.edit(QModelIndex(p)))
menu.addAction(_("Details"), lambda: self.show_transaction(tx_item))
menu.addAction(_("Details"), lambda: self.show_transaction(tx_item, tx))
if is_unconfirmed and tx:
# note: the current implementation of RBF *needs* the old tx fee
rbf = is_mine and not tx.is_final() and fee is not None

2
electrum/gui/qt/lightning_tx_dialog.py

@ -41,7 +41,7 @@ class LightningTxDialog(WindowModalDialog):
def __init__(self, parent: 'ElectrumWindow', tx_item: dict):
WindowModalDialog.__init__(self, parent, _("Lightning Payment"))
self.parent = parent
self.is_sent = bool(tx_item['direction'] is 'sent')
self.is_sent = bool(tx_item['direction'] == 'sent')
self.label = tx_item['label']
self.timestamp = tx_item['timestamp']
self.amount = Decimal(tx_item['amount_msat']) /1000

Loading…
Cancel
Save