Skip to content

Commit 4616d4f

Browse files
authored
Merge pull request spesmilo#10060 from f321x/fix_issue_10053
qt: NewChannelDialog: do some validation before enabling Ok button
2 parents ba07ca3 + 225ff4a commit 4616d4f

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

electrum/gui/qt/new_channel_dialog.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from electrum.lnworker import hardcoded_trampoline_nodes
99
from electrum.util import NotEnoughFunds, NoDynamicFeeEstimates
1010
from electrum.fee_policy import FeePolicy
11+
from electrum.lntransport import extract_nodeid, ConnStringFormatError
1112

1213
from .util import (WindowModalDialog, Buttons, OkButton, CancelButton,
1314
EnterButton, WWLabel, char_width_in_lineedit)
@@ -43,14 +44,18 @@ def __init__(self, window: 'ElectrumWindow', amount_sat: Optional[int] = None, m
4344
vbox.addWidget(QLabel(_('Enter Remote Node ID or connection string or invoice')))
4445
self.remote_nodeid = QLineEdit()
4546
self.remote_nodeid.setMinimumWidth(700)
47+
self.remote_nodeid.textChanged.connect(self.maybe_enable_ok_button)
4648
self.suggest_button = QPushButton(self, text=_('Suggest Peer'))
4749
self.suggest_button.clicked.connect(self.on_suggest)
4850
else:
4951
self.trampoline_combo = QComboBox()
5052
self.trampoline_combo.addItems(self.trampoline_names)
53+
# index 1 is "Electrum trampoline" on mainnet, this defaults to -1 if 1 is not available
5154
self.trampoline_combo.setCurrentIndex(1)
55+
self.trampoline_combo.currentIndexChanged.connect(self.maybe_enable_ok_button)
5256
self.amount_e = BTCAmountEdit(self.window.get_decimal_point)
5357
self.amount_e.setAmount(amount_sat)
58+
self.amount_e.textChanged.connect(self.maybe_enable_ok_button)
5459

5560
btn_width = 10 * char_width_in_lineedit()
5661
self.min_button = EnterButton(_("Min"), self.spend_min)
@@ -83,9 +88,26 @@ def __init__(self, window: 'ElectrumWindow', amount_sat: Optional[int] = None, m
8388

8489
vbox.addLayout(h)
8590
vbox.addStretch()
86-
ok_button = OkButton(self)
87-
ok_button.setDefault(True)
88-
vbox.addLayout(Buttons(CancelButton(self), ok_button))
91+
self.ok_button = OkButton(self)
92+
self.ok_button.setDefault(True)
93+
self.maybe_enable_ok_button()
94+
vbox.addLayout(Buttons(CancelButton(self), self.ok_button))
95+
96+
def maybe_enable_ok_button(self):
97+
enable = True
98+
if self.network.channel_db:
99+
try:
100+
extract_nodeid(str(self.remote_nodeid.text()).strip())
101+
except ConnStringFormatError:
102+
enable = False
103+
else:
104+
try:
105+
self.trampoline_names[self.trampoline_combo.currentIndex()]
106+
except IndexError:
107+
enable = False
108+
if not self.amount_e.get_amount():
109+
enable = False
110+
self.ok_button.setEnabled(enable)
89111

90112
def on_suggest(self):
91113
self.network.start_gossip()

0 commit comments

Comments
 (0)