From cf01a792df0d355be8df27e233d833ab618239c8 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Thu, 19 May 2022 11:40:36 +0200 Subject: [PATCH] Qt: run swap_manager.get_pairs() before opening SwapDialog --- electrum/gui/qt/channels_list.py | 7 +------ electrum/gui/qt/main_window.py | 13 +++++++++++-- electrum/gui/qt/swap_dialog.py | 9 +-------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/electrum/gui/qt/channels_list.py b/electrum/gui/qt/channels_list.py index c200f900d..c8605c7bc 100644 --- a/electrum/gui/qt/channels_list.py +++ b/electrum/gui/qt/channels_list.py @@ -345,7 +345,7 @@ class ChannelsList(MyTreeView): self.can_send_label = QLabel('') h.addWidget(self.can_send_label) h.addStretch() - self.swap_button = EnterButton(_('Swap'), self.swap_dialog) + self.swap_button = EnterButton(_('Swap'), lambda x: self.parent.run_swap_dialog()) self.swap_button.setToolTip("Have at least one channel to do swaps.") self.swap_button.setDisabled(True) self.new_channel_button = EnterButton(_('Open Channel'), self.new_channel_with_warning) @@ -387,11 +387,6 @@ class ChannelsList(MyTreeView): d = NewChannelDialog(self.parent, amount_sat) return d.run() - def swap_dialog(self): - from .swap_dialog import SwapDialog - d = SwapDialog(self.parent) - d.run() - class ChannelFeature(ABC): def __init__(self): diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py index 12f5791ed..6b7fa6f95 100644 --- a/electrum/gui/qt/main_window.py +++ b/electrum/gui/qt/main_window.py @@ -1721,8 +1721,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): if self.channels_list.new_channel_dialog(amount_sat=channel_funding_sat): self.wallet.lnworker.set_invoice_status(key, PR_SCHEDULED) elif r == 2: - d = SwapDialog(self, is_reverse=False, recv_amount_sat=swap_recv_amount_sat) - if d.run(): + if self.run_swap_dialog(is_reverse=False, recv_amount_sat=swap_recv_amount_sat): self.wallet.lnworker.set_invoice_status(key, PR_SCHEDULED) return @@ -1735,6 +1734,16 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): coro = self.wallet.lnworker.pay_invoice(invoice.lightning_invoice, amount_msat=amount_msat) self.run_coroutine_from_thread(coro) + def run_swap_dialog(self, is_reverse=True, recv_amount_sat=None): + if not self.network: + self.window.show_error(_("You are offline.")) + return + def get_pairs_thread(): + self.network.run_from_another_thread(self.wallet.lnworker.swap_manager.get_pairs()) + BlockingWaitingDialog(self, _('Please wait...'), get_pairs_thread) + d = SwapDialog(self, is_reverse=is_reverse, recv_amount_sat=recv_amount_sat) + return d.run() + def on_request_status(self, wallet, key, status): if wallet != self.wallet: return diff --git a/electrum/gui/qt/swap_dialog.py b/electrum/gui/qt/swap_dialog.py index d84d1fafe..3a875547f 100644 --- a/electrum/gui/qt/swap_dialog.py +++ b/electrum/gui/qt/swap_dialog.py @@ -27,7 +27,6 @@ Do you want to continue? class SwapDialog(WindowModalDialog): tx: Optional[PartialTransaction] - update_signal = pyqtSignal() def __init__(self, window: 'ElectrumWindow', is_reverse=True, recv_amount_sat=None): WindowModalDialog.__init__(self, window, _('Submarine Swap')) @@ -85,11 +84,9 @@ class SwapDialog(WindowModalDialog): self.ok_button.setDefault(True) self.ok_button.setEnabled(False) vbox.addLayout(Buttons(CancelButton(self), self.ok_button)) - self.update_signal.connect(self.update) - self.update() if recv_amount_sat: self.init_recv_amount(recv_amount_sat) - self.update_signal.connect(lambda: self.init_recv_amount(recv_amount_sat)) + self.update() def init_recv_amount(self, recv_amount_sat): recv_amount_sat = max(recv_amount_sat, self.swap_manager.min_amount) @@ -218,10 +215,6 @@ class SwapDialog(WindowModalDialog): self.fee_label.repaint() # macOS hack for #6269 def run(self): - if not self.network: - self.window.show_error(_("You are offline.")) - return - self.window.run_coroutine_from_thread(self.swap_manager.get_pairs(), lambda x: self.update_signal.emit()) if not self.exec_(): return if self.is_reverse: