Skip to content

Commit

Permalink
polish logic and fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
briansztamfater committed May 7, 2024
1 parent c48df7a commit 4f98da1
Show file tree
Hide file tree
Showing 9 changed files with 205 additions and 175 deletions.
27 changes: 10 additions & 17 deletions src/status_im/contexts/wallet/send/events.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -169,23 +169,16 @@
(rf/reg-event-fx
:wallet/send-select-token
(fn [{:keys [db]} [{:keys [token stack-id start-flow?]}]]
(let [{token-networks :networks} token
receiver-networks (get-in db [:wallet :ui :send :receiver-networks])
token-networks-ids (mapv #(:chain-id %) token-networks)
token-not-supported-in-receiver-networks? (not (some (set receiver-networks)
token-networks-ids))]
{:db (-> db
(update-in [:wallet :ui :send] dissoc :collectible)
(assoc-in [:wallet :ui :send :token] token)
(assoc-in [:wallet :ui :send :token-not-supported-in-receiver-networks?]
token-not-supported-in-receiver-networks?)
(assoc-in [:wallet :ui :send :token-display-name] (:symbol token)))
:fx [[:dispatch [:wallet/clean-suggested-routes]]
[:dispatch
[:wallet/wizard-navigate-forward
{:current-screen stack-id
:start-flow? start-flow?
:flow-id :wallet-flow}]]]})))
{:db (-> db
(update-in [:wallet :ui :send] dissoc :collectible)
(assoc-in [:wallet :ui :send :token] token)
(assoc-in [:wallet :ui :send :token-display-name] (:symbol token)))
:fx [[:dispatch [:wallet/clean-suggested-routes]]
[:dispatch
[:wallet/wizard-navigate-forward
{:current-screen stack-id
:start-flow? start-flow?
:flow-id :wallet-flow}]]]}))

(rf/reg-event-fx
:wallet/edit-token-to-send
Expand Down
2 changes: 1 addition & 1 deletion src/status_im/contexts/wallet/send/input_amount/style.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
:align-items :center})

(def token-not-available-container
{:max-height 90
{:height 90
:flex 1
:flex-direction :row
:background-color colors/danger-opa-5
Expand Down
213 changes: 109 additions & 104 deletions src/status_im/contexts/wallet/send/input_amount/view.cljs

Large diffs are not rendered by default.

58 changes: 35 additions & 23 deletions src/status_im/contexts/wallet/send/routes/view.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -98,18 +98,26 @@
:customization-color color}}]])))

(defn render-network-values
[{:keys [network-values token-symbol on-press theme on-save to? loading-suggested-routes?]}]
[{:keys [network-values token-symbol on-press theme on-save to? loading-routes?
token-not-supported-in-receiver-networks?]}]
[rn/view
(map-indexed (fn [index {:keys [chain-id total-amount type]}]
(println type "TYPE!!")
[rn/view
{:key (str (if to? "to" "from") "-" chain-id)
:style {:margin-top (if (pos? index) 11 7.5)}}
[quo/network-bridge
{:amount (str total-amount " " token-symbol)
{:amount (if (= type :not-available)
(i18n/label :t/not-available)
(str total-amount " " token-symbol))
:network (network-utils/id->network chain-id)
:status type
:on-press #(when (not loading-suggested-routes?)
:status (cond (and (= type :not-available)
loading-routes?
token-not-supported-in-receiver-networks?)
:loading
(= type :not-available)
:disabled
:else type)
:on-press #(when (not loading-routes?)
(cond
(= type :add)
(rf/dispatch [:show-bottom-sheet
Expand Down Expand Up @@ -181,12 +189,13 @@

(defn view
[{:keys [token theme input-value valid-input?
on-press-to-network current-screen-id]}]
on-press-to-network current-screen-id
token-not-supported-in-receiver-networks?]}]
(let [token-symbol (:symbol token)
nav-current-screen-id (rf/sub [:view-id])
active-screen? (= nav-current-screen-id current-screen-id)
loading-suggested-routes? (rf/sub
[:wallet/wallet-send-loading-suggested-routes?])
loading-routes? (rf/sub
[:wallet/wallet-send-loading-suggested-routes?])
sender-network-values (rf/sub
[:wallet/wallet-send-sender-network-values])
receiver-network-values (rf/sub
Expand Down Expand Up @@ -221,23 +230,26 @@
:container-style style/section-label-right}]])
[rn/view {:style style/routes-inner-container}
[render-network-values
{:token-symbol token-symbol
:network-values sender-network-values
:on-press #(disable-chain %1
disabled-from-chain-ids
token-available-networks-for-suggested-routes)
:to? false
:theme theme
:loading-suggested-routes? loading-suggested-routes?}]
{:token-symbol token-symbol
:network-values sender-network-values
:on-press #(disable-chain
%1
disabled-from-chain-ids
token-available-networks-for-suggested-routes)
:to? false
:theme theme
:loading-routes? loading-routes?
:token-not-supported-in-receiver-networks? false}]
[render-network-links
{:network-links network-links
:sender-network-values sender-network-values}]
[render-network-values
{:token-symbol token-symbol
:network-values receiver-network-values
:on-press on-press-to-network
:to? true
:loading-suggested-routes? loading-suggested-routes?
:theme theme
:on-save #(fetch-routes input-value valid-input? 0)}]]]))
{:token-symbol token-symbol
:network-values receiver-network-values
:on-press on-press-to-network
:to? true
:loading-routes? loading-routes?
:theme theme
:token-not-supported-in-receiver-networks? token-not-supported-in-receiver-networks?
:on-save #(fetch-routes input-value valid-input? 0)}]]]))

54 changes: 31 additions & 23 deletions src/status_im/contexts/wallet/send/utils.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,14 @@
[network-values disabled-chain-ids receiver-networks token-networks-ids to?]
(let [disabled-set (set disabled-chain-ids)
receiver-networks-set (set receiver-networks)
token-networks-ids-set (set token-networks-ids)
network-values-keys (set (keys network-values))
routes-found? (pos? (count network-values-keys))
not-available-networks-set (set (filter #(contains? % token-networks-ids)
receiver-networks-set))
token-networks-ids-set (set token-networks-ids)
not-available-networks (if to?
(filter #(not (token-networks-ids-set %))
receiver-networks)
[])
not-available-networks-set (set not-available-networks)
network-values-with-disabled-chains (when routes-found?
(reduce
(fn [acc k]
Expand All @@ -112,32 +115,33 @@
(assoc acc k (money/bignumber "0"))))
network-values
disabled-chain-ids))
network-values-with-not-available-chains (when routes-found?
(reduce
(fn [acc k]
(if (and to?
(not (contains? token-networks-ids-set
k)))
(assoc acc k (money/bignumber "0"))
acc))
network-values-with-disabled-chains
receiver-networks))]
network-values-with-not-available-chains (if (and to? routes-found?)
(let [network-values-keys
(set (keys
network-values-with-disabled-chains))]
(reduce
(fn [acc k]
(if (not (contains? network-values-keys k))
(assoc acc k nil)
acc))
network-values-with-disabled-chains
not-available-networks))
network-values-with-disabled-chains)]
(cond-> (->> network-values-with-not-available-chains
(map
(fn [[k v]]
{:chain-id k
:total-amount v
:type (cond
(or to? (not (contains? disabled-set k))) :default
(and to? (contains? not-available-networks-set k)) :not-available
(and (not to?) (contains? disabled-set k)) :disabled)}))
(contains? not-available-networks-set k) :not-available
(or to? (not (contains? disabled-set k))) :default
(and (not to?) (contains? disabled-set k)) :disabled)}))
(sort-by #(get network-priority-score (network-utils/id->network (:chain-id %))))
(filter
#(or (and to?
(or (contains? receiver-networks-set (:chain-id %))
(money/greater-than (:total-amount %) (money/bignumber "0"))))
(not to?)
(and to? (= (:type %) :not-available))))
(not to?)))
(vec))
(and to?
routes-found?
Expand All @@ -150,10 +154,16 @@
receiver-networks-set (set receiver-networks)
receiver-networks-count (count receiver-networks)
token-networks-ids-set (set token-networks-ids)
not-available-networks (filter #(not (token-networks-ids-set (:id %))) receiver-networks)
valid-networks-set (set valid-networks)
not-available-networks (if to?
(filter #(not (token-networks-ids-set %)) receiver-networks)
[])
not-available-networks-set (set not-available-networks)
valid-networks (concat valid-networks disabled-chain-ids not-available-networks)]
(println not-available-networks-set (contains? not-available-networks-set 11155420) "432423423423")
valid-networks (concat valid-networks
disabled-chain-ids
(when to?
(filter #(not (valid-networks-set %))
not-available-networks)))]
(cond-> (->> valid-networks
(map (fn [k]
(cond->
Expand All @@ -170,10 +180,8 @@
(network-utils/id->network (:chain-id item)))))
(filter
(fn [%]
(println % (= (:type %) :not-available) "432423424324234242")
(or (and to? (contains? receiver-networks-set (:chain-id %)))
(and (not to?)
(not (= (:type %) :not-available))
(not (contains? disabled-chain-ids (:chain-id %)))))))
(vec))
(and to? (< receiver-networks-count available-networks-count)) (conj {:type :add}))))
Expand Down
16 changes: 16 additions & 0 deletions src/status_im/contexts/wallet/send/utils_test.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@
"10" (money/bignumber "200")}
disabled-chain-ids ["1"]
receiver-networks ["10"]
token-networks-ids ["1" "10" "42161"]
to? true
expected [{:chain-id "1"
:total-amount (money/bignumber "100")
Expand All @@ -284,13 +285,15 @@
result (utils/network-amounts network-values
disabled-chain-ids
receiver-networks
token-networks-ids
to?)]
(is (every? identity (map #(map/deep-compare %1 %2) expected result)))))

(testing "Adds default amount for non-disabled non-receiver networks when to? is false"
(let [network-values {"1" (money/bignumber "100")}
disabled-chain-ids ["10"]
receiver-networks []
token-networks-ids ["1" "10" "42161"]
to? false
expected [{:chain-id "1"
:total-amount (money/bignumber "100")
Expand All @@ -301,18 +304,21 @@
result (utils/network-amounts network-values
disabled-chain-ids
receiver-networks
token-networks-ids
to?)]
(is (every? identity (map #(map/deep-compare %1 %2) expected result)))))

(testing "Handles empty inputs correctly"
(let [network-values {}
disabled-chain-ids []
receiver-networks []
token-networks-ids []
to? true
expected []
result (utils/network-amounts network-values
disabled-chain-ids
receiver-networks
token-networks-ids
to?)]
(is (= expected result))))

Expand All @@ -322,6 +328,7 @@
"42161" (money/bignumber "500")}
disabled-chain-ids ["1" "42161"]
receiver-networks ["10"]
token-networks-ids ["1" "10" "42161"]
to? true
expected [{:chain-id "1"
:total-amount (money/bignumber "300")
Expand All @@ -335,6 +342,7 @@
result (utils/network-amounts network-values
disabled-chain-ids
receiver-networks
token-networks-ids
to?)]
(is (every? identity (map #(map/deep-compare %1 %2) expected result))))))

Expand All @@ -343,13 +351,15 @@
(let [valid-networks ["1" "10" "42161"]
disabled-chain-ids ["42161"]
receiver-networks ["1" "10"]
token-networks-ids ["1" "10" "42161"]
to? true
expected [{:chain-id "1" :type :loading}
{:chain-id "10" :type :loading}
{:type :add}]
result (utils/loading-network-amounts valid-networks
disabled-chain-ids
receiver-networks
token-networks-ids
to?)
comparisons (map #(map/deep-compare %1 %2)
expected
Expand All @@ -360,13 +370,15 @@
(let [valid-networks ["1" "10" "42161"]
disabled-chain-ids ["10" "42161"]
receiver-networks ["1"]
token-networks-ids ["1" "10" "42161"]
to? false
expected [{:chain-id "1" :type :loading}
{:chain-id "10" :type :disabled :total-amount (money/bignumber "0")}
{:chain-id "42161" :type :disabled :total-amount (money/bignumber "0")}]
result (utils/loading-network-amounts valid-networks
disabled-chain-ids
receiver-networks
token-networks-ids
to?)
comparisons (map #(map/deep-compare %1 %2)
expected
Expand All @@ -377,12 +389,14 @@
(let [valid-networks ["1" "10" "42161" "59144"]
disabled-chain-ids ["10"]
receiver-networks ["1" "42161"]
token-networks-ids ["1" "10" "42161"]
to? true
expected [{:chain-id "1" :type :loading}
{:chain-id "42161" :type :loading}]
result (utils/loading-network-amounts valid-networks
disabled-chain-ids
receiver-networks
token-networks-ids
to?)
comparisons (map #(map/deep-compare %1 %2)
expected
Expand All @@ -393,12 +407,14 @@
(let [valid-networks ["1" "10" "42161"]
disabled-chain-ids ["10"]
receiver-networks ["1"]
token-networks-ids ["1" "10" "42161"]
to? true
expected [{:chain-id "1" :type :loading}
{:type :add}]
result (utils/loading-network-amounts valid-networks
disabled-chain-ids
receiver-networks
token-networks-ids
to?)
comparisons (map #(map/deep-compare %1 %2)
expected
Expand Down

0 comments on commit 4f98da1

Please sign in to comment.