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.transaction import PartialTxOutput, PartialTransaction
|
||||||
from electrum.fee_policy import FeePolicy
|
from electrum.fee_policy import FeePolicy
|
||||||
from electrum.crypto import sha256
|
from electrum.crypto import sha256
|
||||||
|
from electrum.submarine_swaps import NostrTransport
|
||||||
|
|
||||||
from electrum.gui import messages
|
from electrum.gui import messages
|
||||||
from . import util
|
from . import util
|
||||||
@@ -54,8 +55,10 @@ class SwapDialog(WindowModalDialog, QtEventListener):
|
|||||||
self.is_reverse = is_reverse if is_reverse is not None else True
|
self.is_reverse = is_reverse if is_reverse is not None else True
|
||||||
vbox = QVBoxLayout(self)
|
vbox = QVBoxLayout(self)
|
||||||
|
|
||||||
recent_offers = transport.get_recent_offers() if not self.config.SWAPSERVER_URL else []
|
self.server_button = QPushButton()
|
||||||
self.server_button = QPushButton(_(f' {len(recent_offers)} providers'))
|
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.clicked.connect(lambda: self.choose_swap_server(transport))
|
||||||
self.server_button.setEnabled(not self.config.SWAPSERVER_URL)
|
self.server_button.setEnabled(not self.config.SWAPSERVER_URL)
|
||||||
self.description_label = WWLabel(self.get_description())
|
self.description_label = WWLabel(self.get_description())
|
||||||
@@ -142,6 +145,15 @@ class SwapDialog(WindowModalDialog, QtEventListener):
|
|||||||
self.on_send_edited()
|
self.on_send_edited()
|
||||||
self.on_recv_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):
|
def timer_actions(self):
|
||||||
if self.needs_tx_update:
|
if self.needs_tx_update:
|
||||||
self.update_tx()
|
self.update_tx()
|
||||||
@@ -471,6 +483,7 @@ class SwapServerDialog(WindowModalDialog, QtEventListener):
|
|||||||
self.ok_button = OkButton(self)
|
self.ok_button = OkButton(self)
|
||||||
vbox.addLayout(Buttons(CancelButton(self), self.ok_button))
|
vbox.addLayout(Buttons(CancelButton(self), self.ok_button))
|
||||||
self.setMinimumWidth(650)
|
self.setMinimumWidth(650)
|
||||||
|
self.register_callbacks()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
if self.exec() != 1:
|
if self.exec() != 1:
|
||||||
@@ -479,6 +492,14 @@ class SwapServerDialog(WindowModalDialog, QtEventListener):
|
|||||||
return item.data(self.Columns.PUBKEY, ROLE_NPUB)
|
return item.data(self.Columns.PUBKEY, ROLE_NPUB)
|
||||||
return None
|
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']):
|
def update_servers_list(self, servers: Sequence['SwapOffer']):
|
||||||
self.servers_list.clear()
|
self.servers_list.clear()
|
||||||
from electrum.util import age
|
from electrum.util import age
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ from .transaction import (
|
|||||||
from .util import (
|
from .util import (
|
||||||
log_exceptions, ignore_exceptions, BelowDustLimit, OldTaskGroup, ca_path, gen_nostr_ann_pow,
|
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,
|
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 . import lnutil
|
||||||
from .lnutil import hex_to_bytes, REDEEM_AFTER_DOUBLE_SPENT_DELAY, Keypair
|
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:
|
if self.config.SWAPSERVER_NPUB == offer.server_npub:
|
||||||
self.sm.update_pairs(pairs)
|
self.sm.update_pairs(pairs)
|
||||||
self._offers[offer.server_npub] = offer
|
self._offers[offer.server_npub] = offer
|
||||||
|
trigger_callback('swap_offers_changed', self.get_recent_offers())
|
||||||
# mirror event to other relays
|
# mirror event to other relays
|
||||||
await self.taskgroup.spawn(self.rebroadcast_event(event, server_relays))
|
await self.taskgroup.spawn(self.rebroadcast_event(event, server_relays))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user