1
0

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:
f321x
2025-06-27 09:40:12 +02:00
parent 3f755e19a4
commit 73249404d4
2 changed files with 25 additions and 3 deletions

View File

@@ -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

View File

@@ -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))