1
0

Qt: add option to request force close of channel

This commit is contained in:
ThomasV
2021-03-15 12:38:00 +01:00
parent d0a4f3581e
commit cf926e8412

View File

@@ -6,7 +6,7 @@ from typing import Sequence, Optional, Dict
from PyQt5 import QtCore, QtGui
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QMenu, QHBoxLayout, QLabel, QVBoxLayout, QGridLayout, QLineEdit,
QPushButton, QAbstractItemView, QComboBox)
QPushButton, QAbstractItemView, QComboBox, QCheckBox)
from PyQt5.QtGui import QFont, QStandardItem, QBrush
from electrum.util import bh2u, NotEnoughFunds, NoDynamicFeeEstimates
@@ -104,11 +104,23 @@ class ChannelsList(MyTreeView):
self.main_window.show_error('Failed to close channel:\n{}'.format(repr(e)))
def close_channel(self, channel_id):
self.is_force_close = False
msg = _('Close channel?')
if not self.parent.question(msg):
force_cb = QCheckBox('Request force close from remote peer')
tooltip = _(
'If you check this option, your node will pretend that it has lost its data and ask the remote node to broadcast their latest state. '
'Doing so from time to time helps make sure that nodes are honest, because your node can punish them if they broadcast a revoked state.')
def on_checked(b):
self.is_force_close = bool(b)
force_cb.stateChanged.connect(on_checked)
force_cb.setToolTip(tooltip)
if not self.parent.question(msg, checkbox=force_cb):
return
def task():
coro = self.lnworker.close_channel(channel_id)
if self.is_force_close:
coro = self.lnworker.request_remote_force_close(channel_id)
else:
coro = self.lnworker.close_channel(channel_id)
return self.network.run_from_another_thread(coro)
WaitingDialog(self, 'please wait..', task, self.on_success, self.on_failure)