Skip to content

Commit

Permalink
[#22036] fix: max fee issue when swapping from ETH
Browse files Browse the repository at this point in the history
  • Loading branch information
mohsen-ghafouri committed Feb 10, 2025
1 parent ed10ed7 commit 00dc6ca
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 8 deletions.
1 change: 1 addition & 0 deletions src/quo/components/wallet/swap_input/component_spec.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
:currency-symbol ""
:value "5"
:fiat-value "1.50"
:on-max-press identity
:network-tag-props {:title "Max: 200 SNT"}}])
(h/is-truthy (h/get-by-label-text :swap-input))
(h/is-truthy (h/get-by-text "SNT"))
Expand Down
5 changes: 3 additions & 2 deletions src/quo/components/wallet/swap_input/view.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
disabled? (= status :disabled)
loading? (= status :loading)
typing? (= status :typing)
max-button-enabled? (and pay? on-max-press)
controlled-input? (some? value)
[container-width
set-container-width] (rn/use-state)
Expand Down Expand Up @@ -168,10 +169,10 @@
:i/reorder])])]
[divider-line/view]
[rn/view
{:style (style/row-2 (or (not pay?) loading?))}
{:style (style/row-2 (or (not max-button-enabled?) loading?))}
(when-not loading?
[:<>
(when pay?
(when max-button-enabled?
[rn/pressable {:on-press on-max-press}
[network-tag/view
(assoc network-tag-props
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@
[search-text on-change-text]
(let [snt-token (rf/sub [:wallet/token-by-symbol "SNT"])
eth-token (rf/sub [:wallet/token-by-symbol "ETH"])
usdt-token (rf/sub [:wallet/token-by-symbol "USDT"])
on-token-press (fn [token]
(let [pay-token-symbol (:symbol token)
asset-to-receive (if (= pay-token-symbol "SNT") eth-token snt-token)]
asset-to-receive (cond (= pay-token-symbol "SNT") eth-token
(= pay-token-symbol "ETH") usdt-token
:else snt-token)]
(rf/dispatch [:wallet.swap/start
{:asset-to-pay {:symbol pay-token-symbol}
:asset-to-receive asset-to-receive
Expand Down
20 changes: 15 additions & 5 deletions src/status_im/contexts/wallet/swap/setup_swap/view.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -122,21 +122,30 @@
approval-transaction-id (rf/sub [:wallet/swap-approval-transaction-id])
approved-amount (rf/sub [:wallet/swap-approved-amount])
error-response (rf/sub [:wallet/swap-error-response])
eth-proposal? (= pay-token-symbol "ETH")
overlay-shown? (boolean (:sheets (rf/sub [:bottom-sheet])))
input-ref (rn/use-ref-atom nil)
set-input-ref (rn/use-callback (fn [ref] (reset! input-ref ref)))
pay-input-num-value (controlled-input/value-numeric input-state)
pay-input-amount (controlled-input/input-value input-state)
pay-token-balance-selected-chain (rf/sub [:wallet/swap-asset-to-pay-balance-for-chain
(:chain-id network)])
max-swap-fee (rf/sub [:wallet/max-swap-fee])
pay-token-fiat-value (rf/sub [:wallet/swap-asset-to-pay-amount-in-fiat
pay-input-num-value])
available-crypto-limit (money/bignumber
pay-token-balance-selected-chain)
available-crypto-limit (rn/use-memo
(fn []
(if eth-proposal?
(money/sub (money/bignumber
pay-token-balance-selected-chain)
max-swap-fee)
(money/bignumber pay-token-balance-selected-chain)))
[eth-proposal? max-swap-fee])
display-decimals (min pay-token-decimals
constants/min-token-decimals-to-display)
available-crypto-limit-display (rf/sub [:wallet/swap-asset-to-pay-balance-for-chain-ui
(:chain-id network)])
available-crypto-limit-display (utils/sanitized-token-amount-to-display available-crypto-limit
display-decimals)
max-button-enabled? (or (not eth-proposal?) (and eth-proposal? swap-proposal))
approval-amount-required-num (when approval-amount-required
(number/to-fixed (number/hex->whole
approval-amount-required
Expand Down Expand Up @@ -190,7 +199,8 @@
input-focused? :typing
:else :disabled)
:on-token-press on-token-press
:on-max-press #(on-max-press (str pay-token-balance-selected-chain))
:on-max-press (when max-button-enabled?
#(on-max-press (money/to-string available-crypto-limit)))
:on-input-focus on-input-focus
:value pay-input-amount
:fiat-value pay-token-fiat-value
Expand Down
10 changes: 10 additions & 0 deletions src/status_im/subs/wallet/swap.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -333,3 +333,13 @@
:token token-for-fees
:prices-per-token prices-per-token})]
fee-in-fiat)))

(rf/reg-sub :wallet/max-swap-fee
:<- [:wallet/swap-proposal-approval-required]
:<- [:wallet/swap-approval-fee]
:<- [:wallet/swap-proposal]
(fn [[approval-required swap-approval-fee swap-proposal]]
(let [wallet-swap-proposal-fee (send-utils/calculate-full-route-gas-fee [swap-proposal])]
(if approval-required
(money/add swap-approval-fee wallet-swap-proposal-fee)
wallet-swap-proposal-fee))))

0 comments on commit 00dc6ca

Please sign in to comment.