qt: SwapDialog: update on changes, don't translate fstr
and differenciate between a single 'provider' and multiple or 0 'providers'. Also update SwapDialog and SwapServerDialog when new offers are incoming. Stops translating f-string.
This commit is contained in:
@@ -14,6 +14,7 @@ from electrum.bitcoin import DummyAddress
|
||||
from electrum.transaction import PartialTxOutput, PartialTransaction
|
||||
from electrum.fee_policy import FeePolicy
|
||||
from electrum.crypto import sha256
|
||||
from electrum.submarine_swaps import NostrTransport
|
||||
|
||||
from electrum.gui import messages
|
||||
from . import util
|
||||
@@ -54,8 +55,10 @@ class SwapDialog(WindowModalDialog, QtEventListener):
|
||||
self.is_reverse = is_reverse if is_reverse is not None else True
|
||||
vbox = QVBoxLayout(self)
|
||||
|
||||
recent_offers = transport.get_recent_offers() if not self.config.SWAPSERVER_URL else []
|
||||
self.server_button = QPushButton(_(f' {len(recent_offers)} providers'))
|
||||
self.server_button = QPushButton()
|
||||
self.set_server_button_text(len(transport.get_recent_offers()) \
|
||||
if not self.config.SWAPSERVER_URL and isinstance(transport, NostrTransport) else 0
|
||||
)
|
||||
self.server_button.clicked.connect(lambda: self.choose_swap_server(transport))
|
||||
self.server_button.setEnabled(not self.config.SWAPSERVER_URL)
|
||||
self.description_label = WWLabel(self.get_description())
|
||||
@@ -142,6 +145,15 @@ class SwapDialog(WindowModalDialog, QtEventListener):
|
||||
self.on_send_edited()
|
||||
self.on_recv_edited()
|
||||
|
||||
@qt_event_listener
|
||||
def on_event_swap_offers_changed(self, recent_offers: Sequence['SwapOffer']):
|
||||
self.set_server_button_text(len(recent_offers))
|
||||
self.update()
|
||||
|
||||
def set_server_button_text(self, offer_count: int):
|
||||
button_text = f' {offer_count} ' + (_('providers') if offer_count != 1 else _('provider'))
|
||||
self.server_button.setText(button_text)
|
||||
|
||||
def timer_actions(self):
|
||||
if self.needs_tx_update:
|
||||
self.update_tx()
|
||||
@@ -471,6 +483,7 @@ class SwapServerDialog(WindowModalDialog, QtEventListener):
|
||||
self.ok_button = OkButton(self)
|
||||
vbox.addLayout(Buttons(CancelButton(self), self.ok_button))
|
||||
self.setMinimumWidth(650)
|
||||
self.register_callbacks()
|
||||
|
||||
def run(self):
|
||||
if self.exec() != 1:
|
||||
@@ -479,6 +492,14 @@ class SwapServerDialog(WindowModalDialog, QtEventListener):
|
||||
return item.data(self.Columns.PUBKEY, ROLE_NPUB)
|
||||
return None
|
||||
|
||||
def closeEvent(self, event):
|
||||
self.unregister_callbacks()
|
||||
event.accept()
|
||||
|
||||
@qt_event_listener
|
||||
def on_event_swap_offers_changed(self, recent_offers: Sequence['SwapOffer']):
|
||||
self.update_servers_list(recent_offers)
|
||||
|
||||
def update_servers_list(self, servers: Sequence['SwapOffer']):
|
||||
self.servers_list.clear()
|
||||
from electrum.util import age
|
||||
|
||||
@@ -32,7 +32,7 @@ from .transaction import (
|
||||
from .util import (
|
||||
log_exceptions, ignore_exceptions, BelowDustLimit, OldTaskGroup, ca_path, gen_nostr_ann_pow,
|
||||
get_nostr_ann_pow_amount, make_aiohttp_proxy_connector, get_running_loop, get_asyncio_loop, wait_for2,
|
||||
run_sync_function_on_asyncio_thread
|
||||
run_sync_function_on_asyncio_thread, trigger_callback
|
||||
)
|
||||
from . import lnutil
|
||||
from .lnutil import hex_to_bytes, REDEEM_AFTER_DOUBLE_SPENT_DELAY, Keypair
|
||||
@@ -1648,6 +1648,7 @@ class NostrTransport(SwapServerTransport):
|
||||
if self.config.SWAPSERVER_NPUB == offer.server_npub:
|
||||
self.sm.update_pairs(pairs)
|
||||
self._offers[offer.server_npub] = offer
|
||||
trigger_callback('swap_offers_changed', self.get_recent_offers())
|
||||
# mirror event to other relays
|
||||
await self.taskgroup.spawn(self.rebroadcast_event(event, server_relays))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user