fix swaps-over-nostr qml:
- post-rebase fixes - await sm.is_initalized.wait() instead of waiting 1 second - fix max_amount computation if channel recv capacity is higher than the max: the value returned by get_send_amount was zero - fix indentation
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import concurrent
|
import concurrent
|
||||||
import threading
|
import threading
|
||||||
import time
|
|
||||||
from enum import IntEnum
|
from enum import IntEnum
|
||||||
from typing import Union, Optional
|
from typing import Union, Optional
|
||||||
|
|
||||||
@@ -68,17 +67,15 @@ class QESwapServerNPubListModel(QAbstractListModel):
|
|||||||
def initModel(self, items):
|
def initModel(self, items):
|
||||||
self.beginInsertRows(QModelIndex(), len(items), len(items))
|
self.beginInsertRows(QModelIndex(), len(items), len(items))
|
||||||
self._services = [{
|
self._services = [{
|
||||||
'npub': x['pubkey'],
|
'npub': x['pubkey'],
|
||||||
'percentage_fee': x['percentage_fee'],
|
'percentage_fee': x['percentage_fee'],
|
||||||
'normal_mining_fee': x['normal_mining_fee'],
|
'normal_mining_fee': x['normal_mining_fee'],
|
||||||
'reverse_mining_fee': x['reverse_mining_fee'],
|
'reverse_mining_fee': x['reverse_mining_fee'],
|
||||||
'claim_mining_fee': x['claim_mining_fee'],
|
'claim_mining_fee': x['claim_mining_fee'],
|
||||||
'min_amount': x['min_amount'],
|
'min_amount': x['min_amount'],
|
||||||
'max_amount': x['max_amount'],
|
'max_amount': x['max_amount'],
|
||||||
'timestamp': age(x['timestamp']),
|
'timestamp': age(x['timestamp']),
|
||||||
}
|
} for x in items]
|
||||||
for x in items
|
|
||||||
]
|
|
||||||
self.endInsertRows()
|
self.endInsertRows()
|
||||||
self.countChanged.emit()
|
self.countChanged.emit()
|
||||||
|
|
||||||
@@ -383,7 +380,6 @@ class QESwapHelper(AuthMixin, QObject, QtEventListener):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
if isinstance(transport, NostrTransport):
|
if isinstance(transport, NostrTransport):
|
||||||
now = int(time.time())
|
|
||||||
if not swap_manager.is_initialized.is_set():
|
if not swap_manager.is_initialized.is_set():
|
||||||
if not transport.is_connected.is_set():
|
if not transport.is_connected.is_set():
|
||||||
self.userinfo = _('Error') + ': ' + '\n'.join([
|
self.userinfo = _('Error') + ': ' + '\n'.join([
|
||||||
@@ -392,7 +388,7 @@ class QESwapHelper(AuthMixin, QObject, QtEventListener):
|
|||||||
])
|
])
|
||||||
self.state = QESwapHelper.State.NoService
|
self.state = QESwapHelper.State.NoService
|
||||||
return
|
return
|
||||||
self.recent_offers = [x for x in transport.offers.values() if now - x['timestamp'] < NostrTransport.NOSTR_EVENT_TIMEOUT]
|
self.recent_offers = [x for x in transport.offers.values()]
|
||||||
if not self.recent_offers:
|
if not self.recent_offers:
|
||||||
self.userinfo = _('Could not find a swap provider.')
|
self.userinfo = _('Could not find a swap provider.')
|
||||||
self.state = QESwapHelper.State.NoService
|
self.state = QESwapHelper.State.NoService
|
||||||
@@ -402,7 +398,7 @@ class QESwapHelper(AuthMixin, QObject, QtEventListener):
|
|||||||
self.undefinedNPub.emit()
|
self.undefinedNPub.emit()
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
self.recent_offers = [x for x in transport.offers.values() if now - x['timestamp'] < NostrTransport.NOSTR_EVENT_TIMEOUT]
|
self.recent_offers = [x for x in transport.offers.values()]
|
||||||
if not self.recent_offers:
|
if not self.recent_offers:
|
||||||
self.userinfo = _('Could not find a swap provider.')
|
self.userinfo = _('Could not find a swap provider.')
|
||||||
self.state = QESwapHelper.State.NoService
|
self.state = QESwapHelper.State.NoService
|
||||||
@@ -438,7 +434,7 @@ class QESwapHelper(AuthMixin, QObject, QtEventListener):
|
|||||||
max_onchain_spend = 0
|
max_onchain_spend = 0
|
||||||
reverse = int(min(lnworker.num_sats_can_send(),
|
reverse = int(min(lnworker.num_sats_can_send(),
|
||||||
swap_manager.get_max_amount()))
|
swap_manager.get_max_amount()))
|
||||||
max_recv_amt_ln = int(lnworker.num_sats_can_receive())
|
max_recv_amt_ln = min(swap_manager.get_max_amount(), int(lnworker.num_sats_can_receive()))
|
||||||
max_recv_amt_oc = swap_manager.get_send_amount(max_recv_amt_ln, is_reverse=False) or 0
|
max_recv_amt_oc = swap_manager.get_send_amount(max_recv_amt_ln, is_reverse=False) or 0
|
||||||
forward = int(min(max_recv_amt_oc,
|
forward = int(min(max_recv_amt_oc,
|
||||||
# maximally supported swap amount by provider
|
# maximally supported swap amount by provider
|
||||||
@@ -625,14 +621,15 @@ class QESwapHelper(AuthMixin, QObject, QtEventListener):
|
|||||||
swap_manager = self._wallet.wallet.lnworker.swap_manager
|
swap_manager = self._wallet.wallet.lnworker.swap_manager
|
||||||
loop = get_asyncio_loop()
|
loop = get_asyncio_loop()
|
||||||
with self._wallet.wallet.lnworker.swap_manager.create_transport() as transport:
|
with self._wallet.wallet.lnworker.swap_manager.create_transport() as transport:
|
||||||
coro = swap_manager.reverse_swap(
|
async def coro():
|
||||||
transport,
|
await swap_manager.is_initialized.wait()
|
||||||
lightning_amount_sat=lightning_amount,
|
return await swap_manager.reverse_swap(
|
||||||
expected_onchain_amount_sat=onchain_amount + swap_manager.get_claim_fee(),
|
transport,
|
||||||
)
|
lightning_amount_sat=lightning_amount,
|
||||||
|
expected_onchain_amount_sat=onchain_amount + swap_manager.get_claim_fee(),
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
time.sleep(1) # FIXME: this is needed because transport hasn't finished initializing yet.
|
fut = asyncio.run_coroutine_threadsafe(coro(), loop)
|
||||||
fut = asyncio.run_coroutine_threadsafe(coro, loop)
|
|
||||||
self.userinfo = _('Performing swap...')
|
self.userinfo = _('Performing swap...')
|
||||||
self.state = QESwapHelper.State.Started
|
self.state = QESwapHelper.State.Started
|
||||||
txid = fut.result()
|
txid = fut.result()
|
||||||
|
|||||||
Reference in New Issue
Block a user