diff --git a/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py b/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py index 7306977a0..6eb73840b 100644 --- a/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py +++ b/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py @@ -71,6 +71,11 @@ Builder.load_string(''' size_hint: 0.5, None height: '48dp' on_release: app.scan_qr(on_complete=s.on_qr) + Button: + text: _('Suggest') + size_hint: 1, None + height: '48dp' + on_release: s.suggest_node() Button: text: _('Clear') size_hint: 1, None @@ -97,6 +102,18 @@ class LightningOpenChannelDialog(Factory.Popup, Logger): d = LabelDialog(_('IP/port in format:\n[host]:[port]'), self.ipport, callback) d.open() + def suggest_node(self): + self.app.wallet.network.start_gossip() + suggested = self.app.wallet.lnworker.lnrater.suggest_peer() + _, _, percent = self.app.wallet.network.lngossip.get_sync_progress_estimate() + + if suggested: + self.pubkey = suggested.hex() + else: + if percent is None: + percent = "??" + self.pubkey = f"Please wait, graph is updating ({percent}% / 30% done)." + def __init__(self, app, lnaddr=None, msg=None): Factory.Popup.__init__(self) Logger.__init__(self) diff --git a/electrum/gui/qt/channels_list.py b/electrum/gui/qt/channels_list.py index 45ff9d476..caa1b9406 100644 --- a/electrum/gui/qt/channels_list.py +++ b/electrum/gui/qt/channels_list.py @@ -356,8 +356,20 @@ class ChannelsList(MyTreeView): max_button = EnterButton(_("Max"), spend_max) max_button.setFixedWidth(100) max_button.setCheckable(True) + + suggest_button = QPushButton(d, text=_('Suggest Peer')) + def on_suggest(): + self.parent.wallet.network.start_gossip() + nodeid = bh2u(lnworker.lnrater.suggest_peer() or b'') + if not nodeid: + remote_nodeid.setText( + "Please wait until the graph is synchronized to 30%.") + else: + remote_nodeid.setText(nodeid) + remote_nodeid.repaint() # macOS hack for #6269 + suggest_button.clicked.connect(on_suggest) + clear_button = QPushButton(d, text=_('Clear')) - clear_button.setFixedWidth(100) def on_clear(): amount_e.setText('') amount_e.setFrozen(False) @@ -367,16 +379,16 @@ class ChannelsList(MyTreeView): max_button.setChecked(False) max_button.repaint() # macOS hack for #6269 clear_button.clicked.connect(on_clear) - h = QGridLayout() h.addWidget(QLabel(_('Your Node ID')), 0, 0) - h.addWidget(local_nodeid, 0, 1, 1, 4) + h.addWidget(local_nodeid, 0, 1, 1, 3) h.addWidget(QLabel(_('Remote Node ID')), 1, 0) - h.addWidget(remote_nodeid, 1, 1, 1, 4) + h.addWidget(remote_nodeid, 1, 1, 1, 3) + h.addWidget(suggest_button, 2, 1) + h.addWidget(clear_button, 2, 2) h.addWidget(QLabel('Amount'), 3, 0) h.addWidget(amount_e, 3, 1) h.addWidget(max_button, 3, 2) - h.addWidget(clear_button, 3, 3) vbox.addLayout(h) ok_button = OkButton(d) ok_button.setDefault(True)