From 3ab345563cb144c97e97f3fdd8d1cfe89b894994 Mon Sep 17 00:00:00 2001 From: Jamie Caprani Date: Wed, 24 Jul 2024 09:54:12 +0100 Subject: [PATCH] fix(wallet): adjust max amount to not include network being bridged to (#20604) --- .../wallet/bridge/input_amount/view.cljs | 23 +++++++++++-------- .../wallet/send/input_amount/view.cljs | 8 +++---- .../wallet/send/send_amount/view.cljs | 15 +++++++----- src/status_im/subs/wallet/send.cljs | 19 +++++++++++++++ 4 files changed, 45 insertions(+), 20 deletions(-) diff --git a/src/status_im/contexts/wallet/bridge/input_amount/view.cljs b/src/status_im/contexts/wallet/bridge/input_amount/view.cljs index 78a1902aff..a6a19583f5 100644 --- a/src/status_im/contexts/wallet/bridge/input_amount/view.cljs +++ b/src/status_im/contexts/wallet/bridge/input_amount/view.cljs @@ -12,13 +12,16 @@ (hot-reload/use-safe-unmount #(rf/dispatch [:wallet/clean-routes-calculation])) [rn/view {:style style/bridge-send-wrapper} [input-amount/view - {:current-screen-id :screen/wallet.bridge-input-amount - :button-one-label (i18n/label :t/review-bridge) - :button-one-props {:icon-left :i/bridge} - :on-confirm (fn [amount] - (rf/dispatch [:wallet/set-token-amount-to-bridge - {:amount amount - :stack-id :screen/wallet.bridge-input-amount}])) - :on-navigate-back (fn [] - (rf/dispatch [:wallet/clean-disabled-from-networks]) - (rf/dispatch [:wallet/clean-send-amount]))}]]) + {:current-screen-id :screen/wallet.bridge-input-amount + :button-one-label (i18n/label :t/review-bridge) + :button-one-props {:icon-left :i/bridge} + :enabled-from-chain-ids (rf/sub + [:wallet/bridge-from-chain-ids]) + :from-enabled-networks (rf/sub [:wallet/bridge-from-networks]) + :on-confirm (fn [amount] + (rf/dispatch [:wallet/set-token-amount-to-bridge + {:amount amount + :stack-id :screen/wallet.bridge-input-amount}])) + :on-navigate-back (fn [] + (rf/dispatch [:wallet/clean-disabled-from-networks]) + (rf/dispatch [:wallet/clean-send-amount]))}]]) diff --git a/src/status_im/contexts/wallet/send/input_amount/view.cljs b/src/status_im/contexts/wallet/send/input_amount/view.cljs index 63d7275321..0e8c1cca88 100644 --- a/src/status_im/contexts/wallet/send/input_amount/view.cljs +++ b/src/status_im/contexts/wallet/send/input_amount/view.cljs @@ -146,6 +146,8 @@ button-one-props :button-one-props current-screen-id :current-screen-id initial-crypto-currency? :initial-crypto-currency? + enabled-from-chain-ids :enabled-from-chain-ids + from-enabled-networks :from-enabled-networks :or {initial-crypto-currency? true}}] (let [_ (rn/dismiss-keyboard!) bottom (safe-area/get-bottom) @@ -164,9 +166,6 @@ token-decimals :decimals :as token} (rf/sub [:wallet/wallet-send-token]) - send-enabled-networks (rf/sub [:wallet/wallet-send-enabled-networks]) - enabled-from-chain-ids (rf/sub - [:wallet/wallet-send-enabled-from-chain-ids]) send-from-locked-amounts (rf/sub [:wallet/wallet-send-from-locked-amounts]) {token-balance :total-balance available-balance :available-balance @@ -355,7 +354,7 @@ :currency-symbol currency-symbol :crypto-decimals (min token-decimals 6) :error? (controlled-input/input-error input-state) - :networks (seq send-enabled-networks) + :networks (seq from-enabled-networks) :title (i18n/label :t/send-limit {:limit (if crypto-currency? @@ -429,3 +428,4 @@ (set-just-toggled-mode? false) (set-input-state controlled-input/delete-all) (rf/dispatch [:wallet/clean-suggested-routes]))}]])) + diff --git a/src/status_im/contexts/wallet/send/send_amount/view.cljs b/src/status_im/contexts/wallet/send/send_amount/view.cljs index 1277caf7d6..b11e69c9a4 100644 --- a/src/status_im/contexts/wallet/send/send_amount/view.cljs +++ b/src/status_im/contexts/wallet/send/send_amount/view.cljs @@ -8,9 +8,12 @@ (defn view [] [input-amount/view - {:current-screen-id :screen/wallet.send-input-amount - :button-one-label (i18n/label :t/review-send) - :on-navigate-back (fn [] - (rf/dispatch [:wallet/clean-disabled-from-networks]) - (rf/dispatch [:wallet/clean-from-locked-amounts]) - (rf/dispatch [:wallet/clean-send-amount]))}]) + {:current-screen-id :screen/wallet.send-input-amount + :button-one-label (i18n/label :t/review-send) + :enabled-from-chain-ids (rf/sub + [:wallet/wallet-send-enabled-from-chain-ids]) + :from-enabled-networks (rf/sub [:wallet/wallet-send-enabled-networks]) + :on-navigate-back (fn [] + (rf/dispatch [:wallet/clean-disabled-from-networks]) + (rf/dispatch [:wallet/clean-from-locked-amounts]) + (rf/dispatch [:wallet/clean-send-amount]))}]) diff --git a/src/status_im/subs/wallet/send.cljs b/src/status_im/subs/wallet/send.cljs index ad1045ba51..783adbda0f 100644 --- a/src/status_im/subs/wallet/send.cljs +++ b/src/status_im/subs/wallet/send.cljs @@ -61,3 +61,22 @@ :wallet/send-token-not-supported-in-receiver-networks? :<- [:wallet/wallet-send] :-> :token-not-supported-in-receiver-networks?) + +(rf/reg-sub + :wallet/bridge-from-networks + :<- [:wallet/wallet-send] + :<- [:wallet/network-details] + (fn [[{:keys [bridge-to-chain-id]} networks]] + (set (filter (fn [network] + (not= (:chain-id network) bridge-to-chain-id)) + networks)))) + +(rf/reg-sub + :wallet/bridge-from-chain-ids + :<- [:wallet/wallet-send] + :<- [:wallet/networks-by-mode] + (fn [[{:keys [bridge-to-chain-id]} networks]] + (keep (fn [network] + (when (not= (:chain-id network) bridge-to-chain-id) + (:chain-id network))) + networks)))