From 215629235d6d5ce079a3e87632da98b0b837139a Mon Sep 17 00:00:00 2001 From: ThomasV Date: Sat, 11 Feb 2023 10:21:01 +0100 Subject: [PATCH] submarine_swaps: fix bugs and create method for max_amount_forward_swap --- electrum/gui/qt/swap_dialog.py | 9 +++++---- electrum/submarine_swaps.py | 9 +++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/electrum/gui/qt/swap_dialog.py b/electrum/gui/qt/swap_dialog.py index 6cfd1060f..62d111882 100644 --- a/electrum/gui/qt/swap_dialog.py +++ b/electrum/gui/qt/swap_dialog.py @@ -138,10 +138,11 @@ class SwapDialog(WindowModalDialog): self._update_tx('!') if self.tx: amount = self.tx.output_value_for_address(ln_dummy_address()) - max_swap_amt = self.swap_manager.get_max_amount() - max_recv_amt_ln = int(self.swap_manager.num_sats_can_receive()) - max_recv_amt_oc = self.swap_manager.get_send_amount(max_recv_amt_ln, is_reverse=False) or float('inf') - max_amt = int(min(max_swap_amt, max_recv_amt_oc)) + max_amt = self.swap_manager.max_amount_forward_swap() + if max_amt is None: + self.send_amount_e.setAmount(None) + self.max_button.setChecked(False) + return if amount > max_amt: amount = max_amt self._update_tx(amount) diff --git a/electrum/submarine_swaps.py b/electrum/submarine_swaps.py index fe6c20c8f..2124ca73d 100644 --- a/electrum/submarine_swaps.py +++ b/electrum/submarine_swaps.py @@ -639,3 +639,12 @@ class SwapManager(Logger): sig = bytes.fromhex(tx.sign_txin(0, swap.privkey)) witness = [sig, preimage, witness_script] txin.witness = bytes.fromhex(construct_witness(witness)) + + def max_amount_forward_swap(self) -> Optional[int]: + """ returns None if we cannot swap """ + max_swap_amt_ln = self.get_max_amount() + max_recv_amt_ln = int(self.num_sats_can_receive()) + max_amt_ln = int(min(max_swap_amt_ln, max_recv_amt_ln)) + max_amt_oc = self.get_send_amount(max_amt_ln, is_reverse=False) or 0 + min_amt_oc = self.get_send_amount(self.min_amount, is_reverse=False) or 0 + return max_amt_oc if max_amt_oc >= min_amt_oc else None