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)
|
show_copy_text_btn=True)
|
||||||
|
|
||||||
def request_force_close(self, channel_id):
|
def request_force_close(self, channel_id):
|
||||||
|
msg = _('Request force-close from remote peer?')
|
||||||
|
if not self.parent.question(msg):
|
||||||
|
return
|
||||||
def task():
|
def task():
|
||||||
coro = self.lnworker.request_force_close(channel_id)
|
coro = self.lnworker.request_force_close(channel_id)
|
||||||
return self.network.run_from_another_thread(coro)
|
return self.network.run_from_another_thread(coro)
|
||||||
@@ -239,19 +242,9 @@ class ChannelsList(MyTreeView):
|
|||||||
if not item:
|
if not item:
|
||||||
return
|
return
|
||||||
channel_id = idx.sibling(idx.row(), self.Columns.NODE_ALIAS).data(ROLE_CHANNEL_ID)
|
channel_id = idx.sibling(idx.row(), self.Columns.NODE_ALIAS).data(ROLE_CHANNEL_ID)
|
||||||
chan = self.lnworker.channel_backups.get(channel_id)
|
chan = self.lnworker.channel_backups.get(channel_id) or self.lnworker.channels[channel_id]
|
||||||
if chan:
|
if not chan.is_backup():
|
||||||
funding_tx = self.parent.wallet.db.get_transaction(chan.funding_outpoint.txid)
|
menu.addAction(_("Details..."), lambda: self.parent.show_channel(channel_id))
|
||||||
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))
|
|
||||||
funding_tx = self.parent.wallet.db.get_transaction(chan.funding_outpoint.txid)
|
funding_tx = self.parent.wallet.db.get_transaction(chan.funding_outpoint.txid)
|
||||||
if funding_tx:
|
if funding_tx:
|
||||||
menu.addAction(_("View funding transaction"), lambda: self.parent.show_transaction(funding_tx))
|
menu.addAction(_("View funding transaction"), lambda: self.parent.show_transaction(funding_tx))
|
||||||
@@ -263,13 +256,12 @@ class ChannelsList(MyTreeView):
|
|||||||
if closing_tx:
|
if closing_tx:
|
||||||
menu.addAction(_("View closing transaction"), lambda: self.parent.show_transaction(closing_tx))
|
menu.addAction(_("View closing transaction"), lambda: self.parent.show_transaction(closing_tx))
|
||||||
menu.addSeparator()
|
menu.addSeparator()
|
||||||
|
|
||||||
cc = self.add_copy_menu(menu, idx)
|
cc = self.add_copy_menu(menu, idx)
|
||||||
cc.addAction(_("Node ID"), lambda: self.place_text_on_clipboard(
|
cc.addAction(_("Node ID"), lambda: self.place_text_on_clipboard(
|
||||||
chan.node_id.hex(), title=_("Node ID")))
|
chan.node_id.hex(), title=_("Node ID")))
|
||||||
cc.addAction(_("Long Channel ID"), lambda: self.place_text_on_clipboard(
|
cc.addAction(_("Long Channel ID"), lambda: self.place_text_on_clipboard(
|
||||||
channel_id.hex(), title=_("Long Channel ID")))
|
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"))
|
fm = menu.addMenu(_("Freeze"))
|
||||||
if not chan.is_frozen_for_sending():
|
if not chan.is_frozen_for_sending():
|
||||||
fm.addAction(_("Freeze for sending"), lambda: self.freeze_channel_for_sending(chan, True))
|
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))
|
cm.addAction(_("Cooperative close"), lambda: self.close_channel(channel_id))
|
||||||
if ChanCloseOption.LOCAL_FCLOSE in close_opts:
|
if ChanCloseOption.LOCAL_FCLOSE in close_opts:
|
||||||
cm.addAction(_("Force-close"), lambda: self.force_close(channel_id))
|
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():
|
if chan.can_be_deleted():
|
||||||
menu.addSeparator()
|
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))
|
menu.exec_(self.viewport().mapToGlobal(position))
|
||||||
|
|
||||||
@QtCore.pyqtSlot(Abstract_Wallet, AbstractChannel)
|
@QtCore.pyqtSlot(Abstract_Wallet, AbstractChannel)
|
||||||
|
|||||||
Reference in New Issue
Block a user