commit 608d8981193ae5f68a3b3b750bd1de9312c5add8
parent 6b36c59ab062ea01fcdc67194c9e6aeb5c504038
Author: ThomasV <thomasv@electrum.org>
Date: Mon, 25 May 2020 15:58:33 +0200
submarine swaps: fix fee rounding and fee slider behavior
Diffstat:
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/electrum/gui/qt/swap_dialog.py b/electrum/gui/qt/swap_dialog.py
@@ -41,6 +41,7 @@ class SwapDialog(WindowModalDialog):
self.recv_amount_e = BTCAmountEdit(self.window.get_decimal_point)
self.send_button = QPushButton('')
self.recv_button = QPushButton('')
+ self.send_follows = False
self.is_reverse = True
self.send_amount_e.follows = False
self.recv_amount_e.follows = False
@@ -87,8 +88,10 @@ class SwapDialog(WindowModalDialog):
self.config.set_key('fee_per_kb', fee_rate, False)
# read claim_fee from config
self.claim_fee = self.swap_manager.get_tx_fee()
- self.on_send_edited()
- #self.on_recv_edited()
+ if self.send_follows:
+ self.on_recv_edited()
+ else:
+ self.on_send_edited()
self.update()
def toggle_direction(self):
@@ -100,23 +103,28 @@ class SwapDialog(WindowModalDialog):
def on_send_edited(self):
if self.send_amount_e.follows:
return
+ self.send_amount_e.setStyleSheet(ColorScheme.DEFAULT.as_stylesheet())
amount = self.send_amount_e.get_amount()
self.recv_amount_e.follows = True
self.recv_amount_e.setAmount(self.get_recv_amount(amount))
+ self.recv_amount_e.setStyleSheet(ColorScheme.BLUE.as_stylesheet())
self.recv_amount_e.follows = False
+ self.send_follows = False
def on_recv_edited(self):
if self.recv_amount_e.follows:
return
+ self.recv_amount_e.setStyleSheet(ColorScheme.DEFAULT.as_stylesheet())
amount = self.recv_amount_e.get_amount()
self.send_amount_e.follows = True
self.send_amount_e.setAmount(self.get_send_amount(amount))
+ self.send_amount_e.setStyleSheet(ColorScheme.BLUE.as_stylesheet())
self.send_amount_e.follows = False
+ self.send_follows = True
def get_pairs(self):
fut = asyncio.run_coroutine_threadsafe(self.swap_manager.get_pairs(), self.network.asyncio_loop)
pairs = fut.result()
- print(pairs)
fees = pairs['pairs']['BTC/BTC']['fees']
self.percentage = fees['percentage']
self.normal_fee = fees['minerFees']['baseAsset']['normal']
@@ -147,7 +155,7 @@ class SwapDialog(WindowModalDialog):
return
if send_amount < self.min_amount or send_amount > self.max_amount:
return
- x = send_amount * (100 - self.percentage) / 100
+ x = int(send_amount * (100 - self.percentage) / 100)
if self.is_reverse:
x -= self.lockup_fee
x -= self.claim_fee
@@ -160,12 +168,13 @@ class SwapDialog(WindowModalDialog):
def get_send_amount(self, recv_amount):
if not recv_amount:
return
- x = recv_amount * (100 + self.percentage) / 100
+ x = recv_amount
if self.is_reverse:
x += self.lockup_fee
x += self.claim_fee
else:
x += self.normal_fee
+ x = int(x * 100 / (100 - self.percentage)) + 1
return x
def run(self):