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 5dc7738fda..fcd3c63aac 100644 --- a/src/status_im/contexts/wallet/bridge/input_amount/view.cljs +++ b/src/status_im/contexts/wallet/bridge/input_amount/view.cljs @@ -10,17 +10,14 @@ [] [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} - :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-sync [:wallet/stop-and-clean-suggested-routes]) - (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} + :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-sync [:wallet/stop-and-clean-suggested-routes]) + (rf/dispatch [:wallet/clean-disabled-from-networks]) + (rf/dispatch [:wallet/clean-send-amount]))}]]) diff --git a/src/status_im/contexts/wallet/send/input_amount/component_spec.cljs b/src/status_im/contexts/wallet/send/input_amount/component_spec.cljs index e70fd3b59f..9dd3016d2b 100644 --- a/src/status_im/contexts/wallet/send/input_amount/component_spec.cljs +++ b/src/status_im/contexts/wallet/send/input_amount/component_spec.cljs @@ -104,7 +104,7 @@ :wallet/wallet-send-tx-type :tx/send :wallet/wallet-send-fee-fiat-formatted "$5,00" :wallet/sending-collectible? false - :wallet/total-amount (money/bignumber "250")}) + :wallet/total-amount-in-to-chains (money/bignumber "250")}) (h/describe "Send > input amount screen" (h/setup-restorable-re-frame) diff --git a/src/status_im/contexts/wallet/send/input_amount/controller.cljs b/src/status_im/contexts/wallet/send/input_amount/controller.cljs index b25450e480..3a55b694e2 100644 --- a/src/status_im/contexts/wallet/send/input_amount/controller.cljs +++ b/src/status_im/contexts/wallet/send/input_amount/controller.cljs @@ -1,12 +1,10 @@ (ns status-im.contexts.wallet.send.input-amount.controller (:require - [status-im.common.controlled-input.utils :as controlled-input] [status-im.contexts.wallet.common.utils :as utils] [status-im.contexts.wallet.send.input-amount.controlled-input-logic :as controlled-input-logic] [utils.money :as money] [utils.number :as number] - [utils.re-frame :as rf] - [status-im.common.router :as router])) + [utils.re-frame :as rf])) ;; notes ;; token-by-symbol and token looks very similar but they have difference in market values data @@ -38,7 +36,6 @@ :<- [:profile/currency-symbol] :<- [:profile/profile] (fn [[{token-symbol :symbol - total-balance :total-balance :as token} currency @@ -57,8 +54,44 @@ utils/token-usd-price utils/one-cent-value utils/calc-max-crypto-decimals) - :token token - :total-balance total-balance})) + :token token})) + +(rf/reg-sub :send-input-amount-screen/max-decimals + :<- [:send-input-amount-screen/controller] + :<- [:send-input-amount-screen/currency-information] + :<- [:wallet/wallet-send-receiver-preferred-networks] + (fn [[{:keys [crypto-currency?]} + {:keys [token-decimals]}]] + (if crypto-currency? token-decimals 2))) + +(rf/reg-sub :send-input-amount-screen/enabled-from-chain-ids + :<- [:wallet/wallet-send-tx-type] + :<- [:wallet/wallet-send-enabled-from-chain-ids] + :<- [:wallet/bridge-from-chain-ids] + (fn [[tx-type send-chain-ids bridge-chain-ids]] + (if (= tx-type :tx/bridge) + bridge-chain-ids + send-chain-ids))) + +(rf/reg-sub :send-input-amount-screen/from-enabled-networks + :<- [:wallet/wallet-send-tx-type] + :<- [:wallet/wallet-send-enabled-networks] + :<- [:wallet/bridge-from-networks] + (fn [[tx-type send-enabled-networks bridge-enabled-networks]] + (if (= tx-type :tx/bridge) + bridge-enabled-networks + send-enabled-networks))) + + +(defn- every-network-value-is-zero? + [sender-network-values] + (every? (fn [{:keys [total-amount]}] + (and + total-amount + (money/bignumber? total-amount) + (money/equal-to total-amount + (money/bignumber "0")))) + sender-network-values)) (rf/reg-sub :send-input-amount-screen/routes-information :<- [:wallet/wallet-send-route] @@ -66,18 +99,32 @@ :<- [:wallet/wallet-send-receiver-network-values] :<- [:wallet/wallet-send-suggested-routes] :<- [:wallet/wallet-send-loading-suggested-routes?] + :<- [:wallet/wallet-send-tx-type] (fn [[route sender-network-values receiver-network-values suggested-routes - loading-routes?]] - {:route route - :sender-network-values sender-network-values - :receiver-network-values receiver-network-values - :suggested-routes suggested-routes - :loading-routes? loading-routes? - :routes (when suggested-routes - (or (:best suggested-routes) []))})) + loading-routes? + tx-type]] + (let [token-not-supported-in-receiver-networks? (and (not= tx-type :tx/bridge) + (->> receiver-network-values + (remove #(= (:type %) :add)) + (every? #(= (:type %) :not-available)))) + routes (when suggested-routes + (or (:best suggested-routes) []))] + {:route route + :sender-network-values sender-network-values + :receiver-network-values receiver-network-values + :suggested-routes suggested-routes + :loading-routes? loading-routes? + :routes routes + :token-not-supported-in-receiver-networks? token-not-supported-in-receiver-networks? + :no-routes-found? (and + (every-network-value-is-zero? + sender-network-values) + (not (nil? routes)) + (not loading-routes?) + (not token-not-supported-in-receiver-networks?))}))) (rf/reg-sub :send-input-amount-screen/networks-information :<- [:wallet/wallet-send-token] @@ -85,25 +132,35 @@ :<- [:wallet/wallet-send-receiver-preferred-networks] (fn [[{token-networks :networks} receiver-networks - receiver-preferred-networks - ]] - {:token-networks token-networks - :receiver-networks receiver-networks - :receiver-preferred-networks receiver-preferred-networks})) + receiver-preferred-networks]] + {:token-networks token-networks + :receiver-networks receiver-networks + :sending-to-unpreferred-networks? (not (every? (fn [receiver-selected-network] + (contains? + (set receiver-preferred-networks) + receiver-selected-network)) + receiver-networks))})) (rf/reg-sub :send-input-amount-screen/token-by-symbol - :<- [:wallet/wallet-send-enabled-from-chain-ids] + :<- [:send-input-amount-screen/enabled-from-chain-ids] :<- [:send-input-amount-screen/currency-information] (fn [[enabled-from-chain-ids {:keys [token-symbol]}]] (rf/sub [:wallet/token-by-symbol (str token-symbol) enabled-from-chain-ids]))) +(rf/reg-sub :send-input-amount-screen/total-balance + :<- [:send-input-amount-screen/token-by-symbol] + (fn [{:keys [total-balance]}] + total-balance)) + (rf/reg-sub :send-input-amount-screen/upper-limit :<- [:send-input-amount-screen/controller] :<- [:send-input-amount-screen/currency-information] + :<- [:send-input-amount-screen/total-balance] (fn [[{:keys [crypto-currency?]} - {:keys [total-balance usd-conversion-rate conversion-rate]}]] + {:keys [usd-conversion-rate conversion-rate]} + total-balance]] (if crypto-currency? (utils/cut-crypto-decimals-to-fit-usd-cents total-balance @@ -125,17 +182,6 @@ (.toFixed (/ token-input-value conversion-rate) token-decimals))))) -(rf/reg-sub - :send-input-amount-screen/token-not-supported-in-receiver-networks? - :<- [:wallet/wallet-send-tx-type] - :<- [:send-input-amount-screen/routes-information] - (fn [[tx-type - {:keys [receiver-network-values]}]] - (and (not= tx-type :tx/bridge) - (->> receiver-network-values - (remove #(= (:type %) :add)) - (every? #(= (:type %) :not-available)))))) - (defn- fiat->crypto [value conversion-rate] (-> value @@ -192,6 +238,35 @@ upper-limit]] (controlled-input-logic/value-out-of-limits? token-input-value upper-limit 0))) +(rf/reg-sub :send-input-amount-screen/recipient-gets-amount + :<- [:send-input-amount-screen/currency-information] + :<- [:wallet/total-amount-in-to-chains] + (fn [[{:keys [conversion-rate token-symbol]} + total-amount-receiver]] + (utils/prettify-crypto-balance + token-symbol + total-amount-receiver + conversion-rate))) + +#_(rf/reg-sub :send-input-amount-screen/owned-eth-balance-is-zero? + :<- [:send-input-amount-screen/currency-information] + :<- [:wallet/total-amount-in-to-chains] + (fn [[{:keys [conversion-rate token-symbol]} + total-amount-receiver]] + (let [owned-eth-token (rf/sub [:wallet/token-by-symbol + (string/upper-case + constants/mainnet-short-name) + enabled-from-chain-ids])]) + )) + +(rf/reg-sub :send-input-amount-screen/fee-formatted + :<- [:send-input-amount-screen/routes-information] + (fn [{:keys [route]}] + (let [native-currency-symbol (when-not (or (nil? route) (empty? route)) + (get-in (first route) + [:from :native-currency-symbol]))] + (rf/sub [:wallet/wallet-send-fee-fiat-formatted native-currency-symbol])))) + (rf/reg-sub :send-input-amount-screen/data :<- [:send-input-amount-screen/controller] :<- [:send-input-amount-screen/currency-information] @@ -202,8 +277,13 @@ :<- [:send-input-amount-screen/value-out-of-limits?] :<- [:send-input-amount-screen/upper-limit-prettified] :<- [:send-input-amount-screen/routes-information] - :<- [:send-input-amount-screen/token-not-supported-in-receiver-networks?] :<- [:send-input-amount-screen/networks-information] + :<- [:send-input-amount-screen/token-by-symbol] + :<- [:send-input-amount-screen/recipient-gets-amount] + :<- [:send-input-amount-screen/max-decimals] + :<- [:send-input-amount-screen/fee-formatted] + :<- [:send-input-amount-screen/enabled-from-chain-ids] + :<- [:send-input-amount-screen/from-enabled-networks] (fn [[{:keys [crypto-currency? token-input-value] :as controller} {:keys [fiat-currency token-symbol token] :as currency-information} @@ -216,12 +296,19 @@ {:keys [route routes sender-network-values - loading-routes?] + loading-routes? + token-not-supported-in-receiver-networks? + no-routes-found?] :as routes-information} - token-not-supported-in-receiver-networks? {:keys [token-networks receiver-networks - receiver-preferred-networks]}]] + sending-to-unpreferred-networks?]} + token-by-symbol + recipient-gets-amount + max-decimals + fee-formatted + enabled-from-chain-ids + from-enabled-networks]] {:crypto-currency? crypto-currency? :fiat-currency fiat-currency :token token @@ -246,7 +333,14 @@ :token-not-supported-in-receiver-networks? token-not-supported-in-receiver-networks? :token-networks token-networks :receiver-networks receiver-networks - :receiver-preferred-networks receiver-preferred-networks})) + :token-by-symbol token-by-symbol + :recipient-gets-amount recipient-gets-amount + :max-decimals max-decimals + :fee-formatted fee-formatted + :sending-to-unpreferred-networks? sending-to-unpreferred-networks? + :no-routes-found? no-routes-found? + :enabled-from-chain-ids enabled-from-chain-ids + :from-enabled-networks from-enabled-networks})) @@ -270,8 +364,13 @@ (rf/reg-event-fx :send-input-amount-screen/token-input-add-character - (fn [{:keys [db]} [c]] - {:db (update-in db token-input-value-path #(controlled-input-logic/add-character % c))})) + (fn [{:keys [db]} [c max-decimals]] + (let [input-value (get-in db token-input-value-path) + new-text (str input-value c) + regex-pattern (str "^\\d*\\.?\\d{0," max-decimals "}$") + regex (re-pattern regex-pattern)] + (when (re-matches regex new-text) + {:db (update-in db token-input-value-path #(controlled-input-logic/add-character % c))})))) (rf/reg-event-fx :send-input-amount-screen/token-input-delete-last (fn [{:keys [db]}] @@ -282,16 +381,3 @@ {:db (assoc-in db token-input-value-path "")})) - -(comment - (rf/dispatch [:send-input-amount-screen/swap-between-fiat-and-crypto]) - (rf/sub [:send-input-amount-screen/upper-limit]) - (rf/sub [:send-input-amount-screen/amount-in-crypto]) - (rf/sub [:send-input-amount-screen/data]) - (rf/sub [:send-input-amount-screen/controller]) - - (rf/dispatch [:send-input-amount-screen/set-input-state]) - - (tap> {:token-by-symbol (rf/sub [:send-input-amount-screen/token-by-symbol]) - :token (:token (rf/sub [:send-input-amount-screen/currency-information]))}) -) diff --git a/src/status_im/contexts/wallet/send/input_amount/logic.cljs b/src/status_im/contexts/wallet/send/input_amount/logic.cljs deleted file mode 100644 index 0c1bfb42db..0000000000 --- a/src/status_im/contexts/wallet/send/input_amount/logic.cljs +++ /dev/null @@ -1 +0,0 @@ -(ns status-im.contexts.wallet.send.input-amount.logic) 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 eb53cbe9c5..240adb3047 100644 --- a/src/status_im/contexts/wallet/send/input_amount/view.cljs +++ b/src/status_im/contexts/wallet/send/input_amount/view.cljs @@ -99,7 +99,7 @@ (defn- estimated-fees - [{:keys [loading-routes? fees amount]}] + [{:keys [loading-routes? fees recipient-gets-amount]}] [rn/view {:style style/estimated-fees-container} (when (ff/enabled? ::ff/wallet.advanced-sending) [rn/view {:style style/estimated-fees-content-container} @@ -123,20 +123,12 @@ :status (if loading-routes? :loading :default) :size :small :title (i18n/label :t/recipient-gets) - :subtitle amount}]]) + :subtitle recipient-gets-amount}]]) + -(defn- every-network-value-is-zero? - [sender-network-values] - (every? (fn [{:keys [total-amount]}] - (and - total-amount - (money/bignumber? total-amount) - (money/equal-to total-amount - (money/bignumber "0")))) - sender-network-values)) (defn select-asset-bottom-sheet - [clear-input!] + [] (let [{preselected-token-symbol :symbol} (rf/sub [:wallet/wallet-send-token])] [:<> ;; Need to be a `:<>` to keep `asset-list` scrollable. [quo/drawer-top @@ -148,7 +140,8 @@ :preselected-token-symbol preselected-token-symbol :on-token-press (fn [token] (rf/dispatch [:wallet/edit-token-to-send token]) - (clear-input!))}]])) + #(rf/dispatch + [:send-input-amount-screen/token-input-delete-all]))}]])) (defn- token-not-available [token-symbol receiver-networks token-networks] @@ -218,13 +211,11 @@ (defn view ;; crypto-decimals, limit-crypto and initial-crypto-currency? args are needed ;; for component tests only - [{default-on-confirm :on-confirm - on-navigate-back :on-navigate-back - button-one-label :button-one-label - button-one-props :button-one-props - current-screen-id :current-screen-id - enabled-from-chain-ids :enabled-from-chain-ids - from-enabled-networks :from-enabled-networks}] + [{on-confirm :on-confirm + on-navigate-back :on-navigate-back + button-one-label :button-one-label + button-one-props :button-one-props + current-screen-id :current-screen-id}] (let [{:keys [crypto-currency? upper-limit upper-limit-prettified @@ -243,92 +234,54 @@ fiat-currency token-networks receiver-networks - receiver-preferred-networks token - token-symbol] - :as state} (rf/sub [:send-input-amount-screen/data]) - view-id (rf/sub [:view-id]) - active-screen? (= view-id current-screen-id) - bottom (safe-area/get-bottom) - on-navigate-back on-navigate-back - handle-on-confirm (fn [amount] - (rf/dispatch [:wallet/set-token-amount-to-send - {:amount amount - :stack-id current-screen-id}])) - on-confirm (or default-on-confirm handle-on-confirm) - - send-from-locked-amounts (rf/sub [:wallet/wallet-send-from-locked-amounts]) - token-by-symbol (rf/sub [:wallet/token-by-symbol - (str token-symbol) - enabled-from-chain-ids]) - token-decimals (-> token - utils/token-usd-price - utils/one-cent-value - utils/calc-max-crypto-decimals) - clear-input! #(rf/dispatch - [:send-input-amount-screen/token-input-delete-all]) - - confirm-disabled? (or (nil? route) - (empty? route) - (not valid-input?)) - total-amount-receiver (rf/sub [:wallet/total-amount true]) - amount-text (str (number/remove-trailing-zeroes - (.toFixed total-amount-receiver - (min token-decimals 6))) - " " - token-symbol) - native-currency-symbol (when-not confirm-disabled? - (get-in (first route) - [:from :native-currency-symbol])) - fee-formatted (when native-currency-symbol - (rf/sub [:wallet/wallet-send-fee-fiat-formatted - native-currency-symbol])) - show-select-asset-sheet #(rf/dispatch - [:show-bottom-sheet - {:content (fn [] - [select-asset-bottom-sheet - clear-input!])}]) - no-routes-found? (and - (every-network-value-is-zero? - sender-network-values) - (not (nil? routes)) - (not loading-routes?) - (not token-not-supported-in-receiver-networks?)) - sending-to-unpreferred-networks? (not (every? (fn [receiver-selected-network] - (contains? - (set receiver-preferred-networks) - receiver-selected-network)) - receiver-networks)) - should-try-again? (and (not upper-limit-exceeded?) no-routes-found?) - current-address (rf/sub [:wallet/current-viewing-account-address]) - owned-eth-token (rf/sub [:wallet/token-by-symbol - (string/upper-case - constants/mainnet-short-name) - enabled-from-chain-ids]) - not-enough-asset? (and - (or no-routes-found? upper-limit-exceeded?) - (not-empty sender-network-values) - (if (= token-symbol - (string/upper-case - constants/mainnet-short-name)) - (money/equal-to - (money/bignumber input-value) - (money/bignumber upper-limit)) - (money/equal-to (:total-balance - owned-eth-token) - 0))) - show-no-routes? (and - (or no-routes-found? upper-limit-exceeded?) - (not-empty sender-network-values) - (not not-enough-asset?)) - request-fetch-routes (fn [bounce-duration-ms] - (fetch-routes - {:amount amount-in-crypto - :valid-input? valid-input? - :bounce-duration-ms bounce-duration-ms - :token token - :reset-amounts-to-zero? (and upper-limit-exceeded? - (some? routes))}))] + token-symbol + token-by-symbol + recipient-gets-amount + max-decimals + fee-formatted + sending-to-unpreferred-networks? + no-routes-found? + enabled-from-chain-ids + from-enabled-networks] + :as state} (rf/sub [:send-input-amount-screen/data]) + view-id (rf/sub [:view-id]) + active-screen? (= view-id current-screen-id) + bottom (safe-area/get-bottom) + on-navigate-back on-navigate-back + show-select-asset-sheet #(rf/dispatch + [:show-bottom-sheet + {:content (fn [] [select-asset-bottom-sheet])}]) + should-try-again? (and (not upper-limit-exceeded?) no-routes-found?) + current-address (rf/sub [:wallet/current-viewing-account-address]) + owned-eth-token (rf/sub [:wallet/token-by-symbol + (string/upper-case + constants/mainnet-short-name) + enabled-from-chain-ids]) + not-enough-asset? (and + (or no-routes-found? upper-limit-exceeded?) + (not-empty sender-network-values) + (if (= token-symbol + (string/upper-case + constants/mainnet-short-name)) + (money/equal-to + (money/bignumber input-value) + (money/bignumber upper-limit)) + (money/equal-to (:total-balance + owned-eth-token) + 0))) + show-no-routes? (and + (or no-routes-found? upper-limit-exceeded?) + (not-empty sender-network-values) + (not not-enough-asset?)) + request-fetch-routes (fn [bounce-duration-ms] + (fetch-routes + {:amount amount-in-crypto + :valid-input? valid-input? + :bounce-duration-ms bounce-duration-ms + :token token + :reset-amounts-to-zero? (and upper-limit-exceeded? + (some? routes))}))] (rn/use-effect (fn [] (when active-screen? @@ -348,14 +301,11 @@ [value-out-of-limits?]) (rn/use-effect (fn [] - (clear-input!) + (rf/dispatch [:send-input-amount-screen/token-input-delete-all]) (rf/dispatch [:wallet/stop-and-clean-suggested-routes]) (rf/dispatch [:wallet/clean-disabled-from-networks])) [current-address]) - (rn/use-effect - (fn [] - (request-fetch-routes 0)) - [send-from-locked-amounts]) + [rn/view {:style style/screen :accessibility-label (str "container" @@ -393,9 +343,9 @@ [token-not-available token-symbol receiver-networks token-networks]) (when (and (not no-routes-found?) (or loading-routes? route)) [estimated-fees - {:loading-routes? loading-routes? - :fees fee-formatted - :amount amount-text}]) + {:loading-routes? loading-routes? + :fees fee-formatted + :recipient-gets-amount recipient-gets-amount}]) (cond show-no-routes? [no-routes-found] not-enough-asset? [not-enough-asset]) @@ -406,7 +356,10 @@ button-one-label) :button-one-props (merge (when-not should-try-again? button-one-props) {:disabled? (or loading-routes? - (and (not should-try-again?) confirm-disabled?)) + (and (not should-try-again?) + (or (nil? route) + (empty? route) + (not valid-input?)))) :on-press (cond should-try-again? #(rf/dispatch [:wallet/start-get-suggested-routes @@ -423,14 +376,8 @@ :left-action :dot :delete-key? true :on-press (fn [c] - (let [new-text (str input-value c) - max-decimals (if crypto-currency? token-decimals 2) - regex-pattern (str "^\\d*\\.?\\d{0," max-decimals "}$") - regex (re-pattern regex-pattern)] - (when (re-matches regex new-text) - (debounce/clear-all) - (rf/dispatch [:send-input-amount-screen/token-input-add-character - c])))) + (rf/dispatch [:send-input-amount-screen/token-input-add-character c + max-decimals])) :on-delete (fn [] (debounce/clear-all) (rf/dispatch [:send-input-amount-screen/token-input-delete-last]) 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 6f4113782a..4c73257e8e 100644 --- a/src/status_im/contexts/wallet/send/send_amount/view.cljs +++ b/src/status_im/contexts/wallet/send/send_amount/view.cljs @@ -8,12 +8,14 @@ (defn view [] [input-amount/view - {: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-sync [:wallet/stop-and-clean-suggested-routes]) - (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) + :on-confirm (fn [amount] + (rf/dispatch [:wallet/set-token-amount-to-send + {:amount amount + :stack-id :screen/wallet.send-input-amount}])) + :on-navigate-back (fn [] + (rf/dispatch-sync [:wallet/stop-and-clean-suggested-routes]) + (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/contexts/wallet/send/transaction_confirmation/view.cljs b/src/status_im/contexts/wallet/send/transaction_confirmation/view.cljs index 3bbf35e4d6..cbd2d6d134 100644 --- a/src/status_im/contexts/wallet/send/transaction_confirmation/view.cljs +++ b/src/status_im/contexts/wallet/send/transaction_confirmation/view.cljs @@ -221,9 +221,8 @@ bridge-to-network (when bridge-to-chain-id (rf/sub [:wallet/network-details-by-chain-id bridge-to-chain-id])) - loading-suggested-routes? (rf/sub - [:wallet/wallet-send-loading-suggested-routes?]) - total-amount-receiver (rf/sub [:wallet/total-amount true]) + loading-suggested-routes? (rf/sub [:wallet/wallet-send-loading-suggested-routes?]) + total-amount-receiver (rf/sub [:wallet/total-amount-in-to-chains]) from-account-props {:customization-color account-color :size 32 :emoji (:emoji account) diff --git a/src/status_im/subs/wallet/networks.cljs b/src/status_im/subs/wallet/networks.cljs index 201162219b..200f50cb5b 100644 --- a/src/status_im/subs/wallet/networks.cljs +++ b/src/status_im/subs/wallet/networks.cljs @@ -75,15 +75,13 @@ {} network-values)))) -(re-frame/reg-sub - :wallet/total-amount +(re-frame/reg-sub :wallet/total-amount-in-to-chains :<- [:wallet/wallet-send] - (fn [{:keys [from-values-by-chain to-values-by-chain]} [_ to-values?]] - (let [network-values (if to-values? to-values-by-chain from-values-by-chain)] - (reduce - (fn [acc amount] - (if (money/bignumber? amount) - (money/add acc amount) - acc)) - (money/bignumber 0) - (vals network-values))))) + (fn [{:keys [to-values-by-chain]}] + (reduce + (fn [acc amount] + (if (money/bignumber? amount) + (money/add acc amount) + acc)) + (money/bignumber 0) + (vals to-values-by-chain))))