channels_list: refactor menu. Add request_force_close option for channels too, guard it with a confirmation dialog.
This commit is contained in:
@@ -183,6 +183,9 @@ class ChannelsList(MyTreeView):
|
||||
show_copy_text_btn=True)
|
||||
|
||||
def request_force_close(self, channel_id):
|
||||
msg = _('Request force-close from remote peer?')
|
||||
if not self.parent.question(msg):
|
||||
return
|
||||
def task():
|
||||
coro = self.lnworker.request_force_close(channel_id)
|
||||
return self.network.run_from_another_thread(coro)
|
||||
@@ -239,19 +242,9 @@ class ChannelsList(MyTreeView):
|
||||
if not item:
|
||||
return
|
||||
channel_id = idx.sibling(idx.row(), self.Columns.NODE_ALIAS).data(ROLE_CHANNEL_ID)
|
||||
chan = self.lnworker.channel_backups.get(channel_id)
|
||||
if chan:
|
||||
funding_tx = self.parent.wallet.db.get_transaction(chan.funding_outpoint.txid)
|
||||
menu.addAction(_("View funding transaction"), lambda: self.parent.show_transaction(funding_tx))
|
||||
if close_opts := chan.get_close_options():
|
||||
if ChanCloseOption.REQUEST_REMOTE_FCLOSE in close_opts:
|
||||
menu.addAction(_("Request force-close"), lambda: self.request_force_close(channel_id))
|
||||
if chan.can_be_deleted():
|
||||
menu.addAction(_("Delete"), lambda: self.remove_channel_backup(channel_id))
|
||||
menu.exec_(self.viewport().mapToGlobal(position))
|
||||
return
|
||||
chan = self.lnworker.channels[channel_id]
|
||||
menu.addAction(_("Details..."), lambda: self.parent.show_channel(channel_id))
|
||||
chan = self.lnworker.channel_backups.get(channel_id) or self.lnworker.channels[channel_id]
|
||||
if not chan.is_backup():
|
||||
menu.addAction(_("Details..."), lambda: self.parent.show_channel(channel_id))
|
||||
funding_tx = self.parent.wallet.db.get_transaction(chan.funding_outpoint.txid)
|
||||
if funding_tx:
|
||||
menu.addAction(_("View funding transaction"), lambda: self.parent.show_transaction(funding_tx))
|
||||
@@ -263,13 +256,12 @@ class ChannelsList(MyTreeView):
|
||||
if closing_tx:
|
||||
menu.addAction(_("View closing transaction"), lambda: self.parent.show_transaction(closing_tx))
|
||||
menu.addSeparator()
|
||||
|
||||
cc = self.add_copy_menu(menu, idx)
|
||||
cc.addAction(_("Node ID"), lambda: self.place_text_on_clipboard(
|
||||
chan.node_id.hex(), title=_("Node ID")))
|
||||
cc.addAction(_("Long Channel ID"), lambda: self.place_text_on_clipboard(
|
||||
channel_id.hex(), title=_("Long Channel ID")))
|
||||
if not chan.is_closed():
|
||||
if not chan.is_backup() and not chan.is_closed():
|
||||
fm = menu.addMenu(_("Freeze"))
|
||||
if not chan.is_frozen_for_sending():
|
||||
fm.addAction(_("Freeze for sending"), lambda: self.freeze_channel_for_sending(chan, True))
|
||||
@@ -285,10 +277,16 @@ class ChannelsList(MyTreeView):
|
||||
cm.addAction(_("Cooperative close"), lambda: self.close_channel(channel_id))
|
||||
if ChanCloseOption.LOCAL_FCLOSE in close_opts:
|
||||
cm.addAction(_("Force-close"), lambda: self.force_close(channel_id))
|
||||
menu.addAction(_("Export backup"), lambda: self.export_channel_backup(channel_id))
|
||||
if ChanCloseOption.REQUEST_REMOTE_FCLOSE in close_opts:
|
||||
cm.addAction(_("Request force-close"), lambda: self.request_force_close(channel_id))
|
||||
if not chan.is_backup():
|
||||
menu.addAction(_("Export backup"), lambda: self.export_channel_backup(channel_id))
|
||||
if chan.can_be_deleted():
|
||||
menu.addSeparator()
|
||||
menu.addAction(_("Delete"), lambda: self.remove_channel(channel_id))
|
||||
if chan.is_backup():
|
||||
menu.addAction(_("Delete"), lambda: self.remove_channel_backup(channel_id))
|
||||
else:
|
||||
menu.addAction(_("Delete"), lambda: self.remove_channel(channel_id))
|
||||
menu.exec_(self.viewport().mapToGlobal(position))
|
||||
|
||||
@QtCore.pyqtSlot(Abstract_Wallet, AbstractChannel)
|
||||
|
||||
Reference in New Issue
Block a user