fix: non supported network warning is shown on the bridge flow (#20098)

Signed-off-by: Brian Sztamfater <brian@status.im>
This commit is contained in:
Brian Sztamfater 2024-05-27 08:55:34 -03:00 committed by GitHub
parent 7e4f55450b
commit 52aaee0bd1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 43 additions and 23 deletions

View File

@ -17,6 +17,7 @@
:padding-vertical 8
:border-radius 12
:height 56
:opacity (if (= state :disabled) 0.3 1)
:background-color (background-color state customization-color theme)})
(def info

View File

@ -45,7 +45,7 @@
[:fiat-value :string]
[:token-value :string]
[:customization-color {:optional true} [:maybe :schema.common/customization-color]]
[:state {:optional true} [:enum :pressed :active :default]]
[:state {:optional true} [:enum :pressed :active :disabled :default]]
[:on-press {:optional true} [:maybe fn?]]]]]
:any])
@ -60,9 +60,9 @@
internal-state (if pressed? :pressed state)]
[rn/pressable
{:style (style/container internal-state customization-color theme)
:on-press-in on-press-in
:on-press-out on-press-out
:on-press on-press
:on-press-in (when-not (= state :disabled) on-press-in)
:on-press-out (when-not (= state :disabled) on-press-out)
:on-press (when-not (= state :disabled) on-press)
:accessibility-label :network-list}
[info props]
[values props]]))

View File

@ -8,44 +8,49 @@
[status-im.contexts.wallet.bridge.bridge-to.style :as style]
[status-im.contexts.wallet.common.account-switcher.view :as account-switcher]
[status-im.contexts.wallet.common.utils :as utils]
[status-im.contexts.wallet.common.utils.networks :as network-utils]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
(defn- bridge-token-component
[]
(fn [{:keys [chain-id network-name]} token]
(let [network (rf/sub [:wallet/network-details-by-chain-id chain-id])
currency (rf/sub [:profile/currency])
currency-symbol (rf/sub [:profile/currency-symbol])
balance (utils/calculate-total-token-balance token [chain-id])
crypto-value (utils/get-standard-crypto-format token balance)
fiat-value (utils/calculate-token-fiat-value
{:currency currency
:balance balance
:token token})
fiat-formatted (utils/get-standard-fiat-format crypto-value currency-symbol fiat-value)]
(fn [{:keys [chain-id network-name]} {:keys [networks] :as token}]
(let [network (rf/sub [:wallet/network-details-by-chain-id chain-id])
currency (rf/sub [:profile/currency])
currency-symbol (rf/sub [:profile/currency-symbol])
balance (utils/calculate-total-token-balance token [chain-id])
crypto-value (utils/get-standard-crypto-format token balance)
fiat-value (utils/calculate-token-fiat-value
{:currency currency
:balance balance
:token token})
fiat-formatted (utils/get-standard-fiat-format crypto-value
currency-symbol
fiat-value)
token-available-on-network? (network-utils/token-available-on-network? networks chain-id)]
[quo/network-list
{:label (name network-name)
:network-image (quo.resources/get-network (:network-name network))
:token-value (str crypto-value " " (:symbol token))
:fiat-value fiat-formatted
:state (if token-available-on-network? :default :disabled)
:on-press #(rf/dispatch [:wallet/select-bridge-network
{:network-chain-id chain-id
:stack-id :screen/wallet.bridge-to}])}])))
(defn view
[]
(let [send-bridge-data (rf/sub [:wallet/wallet-send])
network-details (rf/sub [:wallet/network-details])
(let [network-details (rf/sub [:wallet/network-details])
account (rf/sub [:wallet/current-viewing-account])
token (:token send-bridge-data)
token (rf/sub [:wallet/wallet-send-token])
token-symbol (:symbol token)
tokens (:tokens account)
mainnet (first network-details)
layer-2-networks (rest network-details)
account-token (some #(when (= token-symbol (:symbol %)) %) tokens)
account-token (when account-token (assoc account-token :networks (:networks token)))
bridge-to-title (i18n/label :t/bridge-to
{:name (string/upper-case (str (:name token)))})]
{:name (string/upper-case (str token-symbol))})]
[rn/view
[account-switcher/view
{:on-press #(rf/dispatch [:navigate-back])

View File

@ -125,3 +125,9 @@
(string/join ", "))
formatted-text (string/replace network-names last-comma-followed-by-text-to-end-regex " and ")]
formatted-text))
(defn token-available-on-network?
[token-networks chain-id]
(let [token-networks-ids (mapv #(:chain-id %) token-networks)
token-networks-ids-set (set token-networks-ids)]
(contains? token-networks-ids-set chain-id)))

View File

@ -95,7 +95,8 @@
:related-chain-id 1
:layer 1}]
:wallet/wallet-send-enabled-from-chain-ids [1]
:wallet/wallet-send-amount nil})
:wallet/wallet-send-amount nil
:wallet/wallet-send-tx-type :tx/send})
(h/describe "Send > input amount screen"
(h/setup-restorable-re-frame)

View File

@ -251,9 +251,11 @@
[:wallet/wallet-send-sender-network-values])
receiver-network-values (rf/sub
[:wallet/wallet-send-receiver-network-values])
token-not-supported-in-receiver-networks? (every? #(= (:type %) :not-available)
(filter #(not= (:type %) :add)
receiver-network-values))
tx-type (rf/sub [:wallet/wallet-send-tx-type])
token-not-supported-in-receiver-networks? (and (not= tx-type :tx/bridge)
(->> receiver-network-values
(remove #(= (:type %) :add))
(every? #(= (:type %) :not-available))))
suggested-routes (rf/sub [:wallet/wallet-send-suggested-routes])
routes (when suggested-routes
(or (:best suggested-routes) []))

View File

@ -160,6 +160,11 @@
:<- [:wallet/wallet-send]
:-> :network-links)
(rf/reg-sub
:wallet/wallet-send-tx-type
:<- [:wallet/wallet-send]
:-> :tx-type)
(rf/reg-sub
:wallet/keypairs
:<- [:wallet]