Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
95670336ff | ||
|
|
ac07213ba0 | ||
|
|
9d5f6d0b06 | ||
|
|
48c83ef759 | ||
|
|
c84fc71bf1 |
+2
-2
@@ -2,7 +2,7 @@ DEBUG_WEBVIEW=0
|
||||
ETHEREUM_DEV_CLUSTER=0
|
||||
EXTENSIONS=0
|
||||
GROUP_CHATS_ENABLED=1
|
||||
LOG_LEVEL=debug
|
||||
LOG_LEVEL=error
|
||||
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
||||
MAINNET_WARNING_ENABLED=1
|
||||
PFS_ENCRYPTION_ENABLED=1
|
||||
@@ -20,6 +20,6 @@ FAST_CREATE_COMMUNITY_ENABLED=0
|
||||
TEST_NETWORKS_ENABLED=0
|
||||
STATUS_PROXY_STAGE_NAME=prod
|
||||
FLAG_WALLET_CONNECT_ENABLED=1
|
||||
API_LOGGING_ENABLED=1
|
||||
API_LOGGING_ENABLED=0
|
||||
SENTRY_ENABLED=1
|
||||
SENTRY_ENVIRONMENT=production
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
(ns quo.components.buttons.slide-button.constants)
|
||||
|
||||
(def ^:constant small-dimensions
|
||||
(def track-padding 4)
|
||||
|
||||
(def small-dimensions
|
||||
{:track-height 40
|
||||
:thumb 32})
|
||||
|
||||
(def ^:constant large-dimensions
|
||||
(def large-dimensions
|
||||
{:track-height 48
|
||||
:thumb 40})
|
||||
|
||||
(def ^:constant track-padding 4)
|
||||
(def ^:constant disable-opacity 0.3)
|
||||
(def ^:constant default-width 300)
|
||||
(def disable-opacity 0.3)
|
||||
|
||||
(def ^:constant reset-timeout-ms 500)
|
||||
(def default-width 300)
|
||||
|
||||
@@ -27,8 +27,7 @@
|
||||
(when (and reached-end? (not sliding-complete?))
|
||||
(set-sliding-complete true)
|
||||
(when on-complete
|
||||
(js/setTimeout reset-fn constants/reset-timeout-ms)
|
||||
(on-complete))))))
|
||||
(on-complete reset-fn))))))
|
||||
(gesture/on-end (fn [event]
|
||||
(let [x-translation (oops/oget event "translationX")
|
||||
reached-end? (>= x-translation track-width)]
|
||||
@@ -56,9 +55,10 @@
|
||||
on-track-layout (rn/use-callback
|
||||
#(set-track-width (oops/oget % "nativeEvent.layout.width")))
|
||||
reset-fn (rn/use-callback
|
||||
(fn []
|
||||
(fn [keep-at-end-after-slide?]
|
||||
(set-sliding-complete false)
|
||||
(animations/reset-track-position x-pos)))
|
||||
(when-not keep-at-end-after-slide?
|
||||
(animations/reset-track-position x-pos))))
|
||||
dimensions (rn/use-callback
|
||||
(partial utils/get-dimensions
|
||||
(or track-width constants/default-width)
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
(ns quo.components.common.new-feature-dot
|
||||
(:require [quo.components.common.new-feature-gradient :as new-feature-gradient]))
|
||||
|
||||
(def ^:const size 8)
|
||||
|
||||
(defn view
|
||||
[{:keys [style accessibility-label]}]
|
||||
[new-feature-gradient/view
|
||||
{:style (merge {:width size
|
||||
:height size
|
||||
:border-radius (/ size 2)}
|
||||
style)
|
||||
:accessibility-label accessibility-label}])
|
||||
@@ -1,16 +0,0 @@
|
||||
(ns quo.components.common.new-feature-gradient
|
||||
(:require [quo.foundations.colors :as colors]
|
||||
[quo.theme]
|
||||
[react-native.linear-gradient :as linear-gradient]))
|
||||
|
||||
(defn view
|
||||
[{:keys [style accessibility-label]}]
|
||||
(let [theme (quo.theme/use-theme)]
|
||||
[linear-gradient/linear-gradient
|
||||
{:style style
|
||||
:accessibility-label accessibility-label
|
||||
:colors [(colors/resolve-color :yellow theme)
|
||||
colors/new-feature-gradient-pink]
|
||||
:use-angle true
|
||||
:angle 78
|
||||
:angle-center {:x 0.5 :y 0.5}}]))
|
||||
@@ -33,12 +33,4 @@
|
||||
networks-list])
|
||||
(h/is-truthy (h/query-by-label-text :network-dropdown))
|
||||
(h/fire-event :press (h/query-by-label-text :network-dropdown))
|
||||
(h/was-not-called on-press)))
|
||||
|
||||
(h/test "Should display new chain indicator"
|
||||
(h/render [network-dropdown/view
|
||||
{:state :default
|
||||
:show-new-chain-indicator? true}
|
||||
networks-list])
|
||||
(h/is-truthy (h/query-by-label-text :network-dropdown))
|
||||
(h/is-truthy (h/query-by-label-text :new-chain-indicator))))
|
||||
(h/was-not-called on-press))))
|
||||
|
||||
@@ -23,7 +23,3 @@
|
||||
:opacity (if (= state :disabled) 0.3 1)
|
||||
:border-color (container-border-color props)
|
||||
:align-items :center})
|
||||
|
||||
(def new-chain-indicator
|
||||
{:position :absolute
|
||||
:right 0})
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
(ns quo.components.dropdowns.network-dropdown.view
|
||||
(:require
|
||||
[quo.components.common.new-feature-dot :as new-feature-dot]
|
||||
[quo.components.dropdowns.network-dropdown.style :as style]
|
||||
[quo.components.list-items.preview-list.view :as preview-list]
|
||||
[quo.theme :as quo.theme]
|
||||
[react-native.core :as rn]))
|
||||
|
||||
(defn view
|
||||
[{:keys [on-press state show-new-chain-indicator?] :as props} networks]
|
||||
[{:keys [on-press state] :as props} networks]
|
||||
(let [theme (quo.theme/use-theme)
|
||||
[pressed? set-pressed] (rn/use-state false)
|
||||
on-press-in (rn/use-callback #(set-pressed true))
|
||||
@@ -19,10 +18,6 @@
|
||||
:on-press on-press
|
||||
:on-press-in on-press-in
|
||||
:on-press-out on-press-out}
|
||||
(when show-new-chain-indicator?
|
||||
[new-feature-dot/view
|
||||
{:style style/new-chain-indicator
|
||||
:accessibility-label :new-chain-indicator}])
|
||||
[preview-list/view
|
||||
{:type :network
|
||||
:list-size (count networks)
|
||||
|
||||
@@ -200,15 +200,12 @@
|
||||
shown-name]]))
|
||||
|
||||
(defn- wallet-networks-center
|
||||
[{:keys [networks networks-on-press show-new-chain-indicator? background
|
||||
center-content-container-style]}]
|
||||
[{:keys [networks networks-on-press background center-content-container-style]}]
|
||||
[reanimated/view {:style center-content-container-style}
|
||||
[network-dropdown/view
|
||||
{:state :default
|
||||
:on-press networks-on-press
|
||||
:blur? (= background :blur)
|
||||
:show-new-chain-indicator? show-new-chain-indicator?}
|
||||
networks]])
|
||||
{:state :default
|
||||
:on-press networks-on-press
|
||||
:blur? (= background :blur)} networks]])
|
||||
|
||||
(defn page-nav
|
||||
"Props:
|
||||
|
||||
@@ -64,20 +64,3 @@
|
||||
{:margin-top 7
|
||||
:margin-bottom 2
|
||||
:margin-left -1})
|
||||
|
||||
(def new-feature-tag-container
|
||||
{:margin-left 6
|
||||
:border-radius 12
|
||||
:justify-content :center})
|
||||
|
||||
(def new-feature-tag-gradient
|
||||
{:border-radius 12
|
||||
:position :absolute
|
||||
:left 0
|
||||
:right 0
|
||||
:top 0
|
||||
:bottom 0})
|
||||
|
||||
(def new-feature-tag-text
|
||||
{:color colors/white
|
||||
:margin-horizontal 5})
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
[quo.components.avatars.icon-avatar :as icon-avatar]
|
||||
[quo.components.avatars.user-avatar.view :as user-avatar]
|
||||
[quo.components.buttons.button.view :as button]
|
||||
[quo.components.common.new-feature-gradient :as new-feature-gradient]
|
||||
[quo.components.icon :as icon]
|
||||
[quo.components.list-items.preview-list.view :as preview-list]
|
||||
[quo.components.markdown.text :as text]
|
||||
@@ -116,9 +115,7 @@
|
||||
nil)])
|
||||
|
||||
(defn view
|
||||
[{:keys [title show-new-feature-tag? on-press action-props accessibility-label blur? container-style
|
||||
content]
|
||||
:as props}]
|
||||
[{:keys [title on-press action-props accessibility-label blur? container-style content] :as props}]
|
||||
[rn/pressable
|
||||
{:style (merge style/container container-style)
|
||||
:on-press (or on-press (:on-change action-props))
|
||||
@@ -129,19 +126,10 @@
|
||||
[rn/view {:style (style/left-sub-container props)}
|
||||
[image-component props]
|
||||
[rn/view {:style (style/left-container (:image props))}
|
||||
[rn/view {:flex-direction :row}
|
||||
[text/text
|
||||
{:weight :medium
|
||||
:style {:color (when blur? colors/white)}}
|
||||
title]
|
||||
(when show-new-feature-tag?
|
||||
[rn/view {:style style/new-feature-tag-container}
|
||||
[new-feature-gradient/view {:style style/new-feature-tag-gradient}]
|
||||
[text/text
|
||||
{:weight :semi-bold
|
||||
:size :label
|
||||
:style style/new-feature-tag-text}
|
||||
(string/upper-case (i18n/label :t/new))]])]
|
||||
[text/text
|
||||
{:weight :medium
|
||||
:style {:color (when blur? colors/white)}}
|
||||
title]
|
||||
[description-component props]
|
||||
[tag-component props]]]
|
||||
[rn/view {:style (style/sub-container (:alignment action-props))}
|
||||
|
||||
@@ -18,6 +18,5 @@
|
||||
[:dropdown-on-press {:optional true} [:maybe fn?]]
|
||||
[:networks {:optional true}
|
||||
[:maybe [:sequential [:map [:source [:maybe :schema.common/image-source]]]]]]
|
||||
[:dropdown-state {:optional true} [:maybe [:enum :default :disabled]]]
|
||||
[:show-new-chain-indicator? {:optional true} [:maybe :boolean]]]]]
|
||||
[:dropdown-state {:optional true} [:maybe [:enum :default :disabled]]]]]]
|
||||
:any])
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
bars))
|
||||
|
||||
(defn- view-info-top
|
||||
[{:keys [state balance networks dropdown-on-press dropdown-state show-new-chain-indicator?]}]
|
||||
[{:keys [state balance networks dropdown-on-press dropdown-state]}]
|
||||
(let [theme (quo.theme/use-theme)]
|
||||
[rn/view {:style style/container-info-top}
|
||||
(if (= state :loading)
|
||||
@@ -36,10 +36,9 @@
|
||||
:style (style/style-text-heading theme)}
|
||||
balance])
|
||||
[network-dropdown/view
|
||||
{:state (or dropdown-state :default)
|
||||
:blur? true
|
||||
:on-press dropdown-on-press
|
||||
:show-new-chain-indicator? show-new-chain-indicator?}
|
||||
{:state (or dropdown-state :default)
|
||||
:blur? true
|
||||
:on-press dropdown-on-press}
|
||||
networks]]))
|
||||
|
||||
(defn- view-metrics
|
||||
|
||||
@@ -315,8 +315,6 @@
|
||||
networks-short-name
|
||||
socials))
|
||||
|
||||
(def new-feature-gradient-pink "#FF33A3")
|
||||
|
||||
(defn hex-string?
|
||||
[s]
|
||||
(and (string? s) (string/starts-with? s "#")))
|
||||
|
||||
@@ -39,12 +39,19 @@
|
||||
"wallet.suggested.routes"
|
||||
{:fx [[:dispatch [:wallet/handle-suggested-routes (transforms/js->clj event-js)]]]}
|
||||
|
||||
"wallet.router.sending-transactions-started"
|
||||
{:fx [[:dispatch
|
||||
[:wallet/sending-transactions-started-signal-received (transforms/js->clj event-js)]]]}
|
||||
|
||||
"wallet.router.sign-transactions"
|
||||
{:fx [[:dispatch [:wallet/sign-transactions-signal-received (transforms/js->clj event-js)]]]}
|
||||
|
||||
"wallet.router.transactions-sent"
|
||||
{:fx [[:dispatch [:wallet/transactions-sent-signal-received (transforms/js->clj event-js)]]]}
|
||||
|
||||
"wallet.transaction.status-changed"
|
||||
{:fx [[:dispatch [:wallet/status-changed-signal-received (transforms/js->clj event-js)]]]}
|
||||
|
||||
"envelope.sent"
|
||||
(messages.transport/update-envelopes-status
|
||||
cofx
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
:auth-button-label auth-button-label}]))
|
||||
(vec (conj dependencies on-auth-success on-auth-fail)))
|
||||
on-slider-complete (rn/use-callback
|
||||
(fn []
|
||||
(fn [reset-slider-fn]
|
||||
(js/setTimeout #(reset-slider-fn false) 500)
|
||||
(if (fn? on-complete)
|
||||
(on-complete)
|
||||
(on-complete-callback)))
|
||||
|
||||
@@ -275,8 +275,7 @@
|
||||
{:events [:chat/unmute-chat-community]}
|
||||
[{:keys [db]} chat-id]
|
||||
(let [{:keys [community-id]} (get-in db [:chats chat-id])]
|
||||
(when community-id
|
||||
{:db (assoc-in db [:communities community-id :muted] false)})))
|
||||
{:db (assoc-in db [:communities community-id :muted] false)}))
|
||||
|
||||
(rf/defn mute-chat-failed
|
||||
{:events [:chat/mute-failed]}
|
||||
|
||||
@@ -18,16 +18,11 @@
|
||||
:padding-horizontal 36
|
||||
:padding-vertical 30
|
||||
:background-color (colors/theme-colors colors/white colors/neutral-95 theme)}}
|
||||
[rn/text
|
||||
{:style {:font-size 26
|
||||
:color (colors/theme-colors "#8F8E94" "#9F9FA5" theme)
|
||||
:margin-bottom 36}}
|
||||
[rn/text {:style {:font-size 26 :color "#9F9FA5" :margin-bottom 36}}
|
||||
(i18n/label :t/ready-to-scan)]
|
||||
[rn/image {:source (resources/get-image :nfc-prompt)}]
|
||||
[rn/text
|
||||
{:style {:font-size 16
|
||||
:color (colors/theme-colors "#09101C" :white theme)
|
||||
:margin-vertical 36}}
|
||||
[rn/image
|
||||
{:source (resources/get-image :nfc-prompt)}]
|
||||
[rn/text {:style {:font-size 16 :color :white :margin-vertical 36}}
|
||||
(if connected?
|
||||
(i18n/label :t/connected-dont-move)
|
||||
(i18n/label :t/hold-phone-near-keycard))]
|
||||
@@ -37,12 +32,6 @@
|
||||
(rf/dispatch [:keycard/hide-connection-sheet]))
|
||||
:style {:flex-direction :row}}
|
||||
[rn/view
|
||||
{:style {:background-color (colors/theme-colors "#D5D4DB" "#8E8E93" theme)
|
||||
:flex 1
|
||||
:align-items :center
|
||||
:padding 18
|
||||
:border-radius 10}}
|
||||
[rn/text
|
||||
{:style {:color (colors/theme-colors "#09101C" :white theme)
|
||||
:font-size 16}}
|
||||
{:style {:background-color "#8E8E93" :flex 1 :align-items :center :padding 18 :border-radius 10}}
|
||||
[rn/text {:style {:color :white :font-size 16}}
|
||||
(i18n/label :t/cancel)]]]]]))
|
||||
|
||||
+1
-2
@@ -7,7 +7,6 @@
|
||||
[react-native.safe-area :as safe-area]
|
||||
[status-im.common.floating-button-page.view :as floating-button-page]
|
||||
[status-im.contexts.settings.wallet.saved-addresses.add-address-to-save.style :as style]
|
||||
[status-im.contexts.wallet.common.utils :as utils]
|
||||
[status-im.contexts.wallet.common.validation :as validation]
|
||||
[utils.address :as utils-address]
|
||||
[utils.debounce :as debounce]
|
||||
@@ -160,7 +159,7 @@
|
||||
(fn [clipboard-text]
|
||||
(when-not (string/blank? clipboard-text)
|
||||
(-> clipboard-text
|
||||
utils/on-paste-address-or-ens
|
||||
utils-address/extract-address-without-chains-info
|
||||
on-change-text)))))
|
||||
on-press-continue (rn/use-callback
|
||||
(fn []
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
[reagent.core :as reagent]
|
||||
[status-im.common.floating-button-page.view :as floating-button-page]
|
||||
[status-im.contexts.wallet.add-account.add-address-to-watch.style :as style]
|
||||
[status-im.contexts.wallet.common.utils :as utils]
|
||||
[status-im.contexts.wallet.common.validation :as validation]
|
||||
[status-im.subs.wallet.add-account.address-to-watch]
|
||||
[utils.address :as utils-address]
|
||||
@@ -43,7 +42,7 @@
|
||||
paste-on-input #(clipboard/get-string
|
||||
(fn [clipboard-text]
|
||||
(-> clipboard-text
|
||||
utils/on-paste-address-or-ens
|
||||
utils.address/extract-address-without-chains-info
|
||||
on-change-text)))]
|
||||
(rn/use-effect (fn []
|
||||
(when-not (string/blank? scanned-address)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
(ns status-im.contexts.wallet.common.account-switcher.view
|
||||
(:require
|
||||
[quo.core :as quo]
|
||||
[react-native.core :as rn]
|
||||
[status-im.contexts.wallet.sheets.account-options.view :as account-options]
|
||||
[status-im.contexts.wallet.sheets.network-filter.view :as network-filter]
|
||||
[status-im.contexts.wallet.sheets.select-account.view :as select-account]
|
||||
@@ -31,33 +30,25 @@
|
||||
type :no-title}}]
|
||||
(let [{:keys [color emoji watch-only?]} (rf/sub [:wallet/current-viewing-account])
|
||||
networks (rf/sub [:wallet/selected-network-details])
|
||||
sending-collectible? (rf/sub [:wallet/sending-collectible?])
|
||||
show-new-chain-indicator? (rf/sub [:wallet/show-new-chain-indicator?])
|
||||
on-press-networks (rn/use-callback
|
||||
(fn []
|
||||
(rf/dispatch [:wallet/hide-new-chain-indicator])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content network-filter/view}])))]
|
||||
sending-collectible? (rf/sub [:wallet/sending-collectible?])]
|
||||
[quo/page-nav
|
||||
{:type type
|
||||
:icon-name icon-name
|
||||
:margin-top margin-top
|
||||
:background :blur
|
||||
:on-press on-press
|
||||
:accessibility-label accessibility-label
|
||||
:networks networks
|
||||
:align-center? true
|
||||
:networks-on-press on-press-networks
|
||||
:show-new-chain-indicator? show-new-chain-indicator?
|
||||
:right-side [(when (and (ff/enabled? ::ff/wallet.wallet-connect)
|
||||
(not watch-only?)
|
||||
show-dapps-button?)
|
||||
{:icon-name :i/dapps
|
||||
:on-press #(rf/dispatch [:navigate-to
|
||||
:screen/wallet.connected-dapps])})
|
||||
(when-not sending-collectible?
|
||||
{:content-type :account-switcher
|
||||
:customization-color color
|
||||
:on-press #(on-switcher-press switcher-type params)
|
||||
:emoji emoji
|
||||
:type (when watch-only? :watch-only)})]}]))
|
||||
{:type type
|
||||
:icon-name icon-name
|
||||
:margin-top margin-top
|
||||
:background :blur
|
||||
:on-press on-press
|
||||
:accessibility-label accessibility-label
|
||||
:networks networks
|
||||
:align-center? true
|
||||
:networks-on-press #(rf/dispatch [:show-bottom-sheet {:content network-filter/view}])
|
||||
:right-side [(when (and (ff/enabled? ::ff/wallet.wallet-connect)
|
||||
(not watch-only?)
|
||||
show-dapps-button?)
|
||||
{:icon-name :i/dapps
|
||||
:on-press #(rf/dispatch [:navigate-to :screen/wallet.connected-dapps])})
|
||||
(when-not sending-collectible?
|
||||
{:content-type :account-switcher
|
||||
:customization-color color
|
||||
:on-press #(on-switcher-press switcher-type params)
|
||||
:emoji emoji
|
||||
:type (when watch-only? :watch-only)})]}]))
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
[status-im.common.qr-codes.view :as qr-codes]
|
||||
[status-im.constants :as constants]
|
||||
[status-im.contexts.wallet.common.utils.networks :as network-utils]
|
||||
[utils.address]
|
||||
[utils.money :as money]
|
||||
[utils.number :as number]
|
||||
[utils.string]))
|
||||
@@ -325,19 +324,20 @@
|
||||
|
||||
(defn make-network-item
|
||||
"This function generates props for quo/category component item"
|
||||
[{:keys [network-name color on-change networks label-props type blur?]}]
|
||||
(cond-> {:title (string/capitalize (name network-name))
|
||||
:image :icon-avatar
|
||||
:image-props {:icon (resources/get-network network-name)
|
||||
:size :size-20}
|
||||
;; Remove the following line for v2.35
|
||||
:show-new-feature-tag? (= network-name constants/base-network-name)
|
||||
:action :selector
|
||||
:action-props {:type (or type :checkbox)
|
||||
:blur? blur?
|
||||
:customization-color color
|
||||
:checked? (contains? networks network-name)
|
||||
:on-change on-change}}
|
||||
[{:keys [network-name color on-change networks state label-props type blur?]}]
|
||||
(cond-> {:title (string/capitalize (name network-name))
|
||||
:image :icon-avatar
|
||||
:image-props {:icon (resources/get-network network-name)
|
||||
:size :size-20}
|
||||
:action :selector
|
||||
:action-props {:type (or type
|
||||
(if (= :default state)
|
||||
:filled-checkbox
|
||||
:checkbox))
|
||||
:blur? blur?
|
||||
:customization-color color
|
||||
:checked? (contains? networks network-name)
|
||||
:on-change on-change}}
|
||||
|
||||
label-props
|
||||
(assoc :label :text
|
||||
@@ -481,10 +481,86 @@
|
||||
(some positive-balance-in-any-chain? tokens))
|
||||
operable-account))))
|
||||
|
||||
(defn on-paste-address-or-ens
|
||||
"Check if the clipboard has any valid address and extract the address without any chain info.
|
||||
If it does not contain an valid address or it is ENS, return the clipboard text as it is"
|
||||
[clipboard-text]
|
||||
(if (utils.address/supported-address? clipboard-text)
|
||||
(utils.address/extract-address-without-chains-info clipboard-text)
|
||||
clipboard-text))
|
||||
(defn send-details-map
|
||||
"Generates a new map with all the sen details using the original
|
||||
details we've received from `status-go`. The new one contains only
|
||||
the keys we need."
|
||||
[send-details]
|
||||
(let [{:keys [uuid
|
||||
sendType
|
||||
fromAddress
|
||||
toAddress
|
||||
fromChain
|
||||
toChain
|
||||
fromAmount
|
||||
toAmount
|
||||
fromAsset
|
||||
toAsset
|
||||
username
|
||||
publicKey
|
||||
packId]} send-details]
|
||||
{:uuid uuid
|
||||
:send-type sendType
|
||||
:address-from fromAddress
|
||||
:address-to toAddress
|
||||
:tx-to ""
|
||||
:from-chain fromChain
|
||||
:to-chain toChain
|
||||
:from-amount fromAmount
|
||||
:to-amount toAmount
|
||||
:from-asset fromAsset
|
||||
:to-asset toAsset
|
||||
:username username
|
||||
:public-key publicKey
|
||||
:pack-id packId
|
||||
:tx-hash ""
|
||||
:approval-tx? false}))
|
||||
|
||||
(defn details-map
|
||||
"Generates map with all the transaction details based on what we've
|
||||
got from status-go as `send-details` and `sent-transaction`."
|
||||
[send-details sent-transaction]
|
||||
(let [send-details (send-details-map send-details)
|
||||
{:keys [toAddress fromChain toChain amountIn
|
||||
amountOut fromToken toToken hash
|
||||
approvalTx]} sent-transaction
|
||||
amount-in (money/from-hex amountIn)
|
||||
amount-out (money/from-hex amountOut)
|
||||
sent-transaction? (and sent-transaction (> (-> sent-transaction :hash count) 0))]
|
||||
(if sent-transaction?
|
||||
(cond-> send-details
|
||||
true (assoc :tx-to toAddress)
|
||||
(> fromChain 0) (assoc :from-chain fromChain)
|
||||
(> toChain 0) (assoc :to-chain toChain)
|
||||
(not= amount-in "0") (assoc :from-amount amount-in)
|
||||
(not= amount-out "0") (assoc :to-amount amount-out)
|
||||
(> (count fromToken) 0) (assoc :from-asset fromToken)
|
||||
(> (count toToken) 0) (assoc :to-asset toToken)
|
||||
true (assoc :tx-hash hash)
|
||||
true (assoc :approval-tx? approvalTx))
|
||||
send-details)))
|
||||
|
||||
(defn contact-name-by-address
|
||||
[db address]
|
||||
(or (get-in db [:wallet :accounts address :name])
|
||||
(get-in db [:contacts/contacts address :primary-name])))
|
||||
|
||||
(defn tx-to-name
|
||||
"Returns the transaction name that will be used for certain types of transactions."
|
||||
[send-type]
|
||||
(cond
|
||||
(= send-type constants/send-type-bridge) "Hop"
|
||||
(= send-type constants/send-type-swap) "ParaSwap"
|
||||
:else nil))
|
||||
|
||||
(defn transaction-approval-required?
|
||||
"Indicates whether the transaction needs approval based on the information
|
||||
from the database."
|
||||
[transactions {:keys [swap-proposal approval-transaction-id]}]
|
||||
(let [approval-transaction (when approval-transaction-id
|
||||
(get transactions approval-transaction-id))
|
||||
already-approved? (and approval-transaction
|
||||
(= (:status approval-transaction)
|
||||
:confirmed))]
|
||||
(and (:approval-required swap-proposal)
|
||||
(not already-approved?))))
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
[clojure.string :as string]
|
||||
[native-module.core :as native-module]
|
||||
[promesa.core :as promesa]
|
||||
[react-native.async-storage :as async-storage]
|
||||
[status-im.common.json-rpc.events :as json-rpc]
|
||||
[status-im.contexts.profile.recover.effects :as profile.recover.effects]
|
||||
[status-im.contexts.wallet.rpc :as wallet-rpc]
|
||||
@@ -131,14 +130,3 @@
|
||||
(-> (wallet-rpc/sign-message message address (security/safe-unmask-data password))
|
||||
(promesa/then on-success)
|
||||
(promesa/catch on-error))))
|
||||
|
||||
(rf/reg-fx
|
||||
:effects.wallet/retrieve-base-chain-indicator-shown
|
||||
(fn []
|
||||
(async-storage/get-item :base-chain-indicator-shown
|
||||
#(rf/dispatch [:wallet/retrieve-new-chain-indicator (not %)]))))
|
||||
|
||||
(rf/reg-fx
|
||||
:effects.wallet/set-base-chain-indicator-shown
|
||||
(fn [flag]
|
||||
(async-storage/set-item! :base-chain-indicator-shown flag)))
|
||||
|
||||
@@ -783,28 +783,72 @@
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/transactions-sent-signal-received
|
||||
(fn [{:keys [db]}
|
||||
(fn [_
|
||||
[{sent-transactions :sentTransactions
|
||||
send-details :sendDetails}]]
|
||||
(let [swap? (get-in db [:wallet :ui :swap])]
|
||||
{:fx [[:dispatch
|
||||
(if-let [error-response (:errorResponse send-details)]
|
||||
[(if swap?
|
||||
:wallet.swap/transaction-failure
|
||||
:wallet/transaction-failure)
|
||||
error-response]
|
||||
[(if swap?
|
||||
:wallet.swap/transaction-success
|
||||
:wallet/transaction-success)
|
||||
sent-transactions])]]})))
|
||||
{:fx [[:dispatch
|
||||
[:wallet/show-transaction-notification
|
||||
{:status :sent
|
||||
:send-details send-details
|
||||
:sent-transaction (first sent-transactions)}]]
|
||||
[:dispatch
|
||||
(if (:errorResponse send-details)
|
||||
[:wallet/transaction-failure send-details]
|
||||
[(if (= (:sendType send-details) constants/send-type-swap)
|
||||
:wallet.swap/transaction-success
|
||||
:wallet/transaction-success)
|
||||
sent-transactions])]]}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/retrieve-new-chain-indicator
|
||||
(fn [{:keys [db]} [flag]]
|
||||
{:db (assoc-in db [:wallet :ui :show-new-chain-indicator?] flag)}))
|
||||
:wallet/sending-transactions-started-signal-received
|
||||
(fn [_
|
||||
[{sent-transactions :sentTransactions
|
||||
send-details :sendDetails}]]
|
||||
{:fx [[:dispatch
|
||||
[:wallet/show-transaction-notification
|
||||
{:status :sending
|
||||
:send-details send-details
|
||||
:sent-transaction (first sent-transactions)}]]]}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/hide-new-chain-indicator
|
||||
(fn [{:keys [db]}]
|
||||
{:db (assoc-in db [:wallet :ui :show-new-chain-indicator?] false)
|
||||
:fx [[:effects.wallet/set-base-chain-indicator-shown true]]}))
|
||||
:wallet/status-changed-signal-received
|
||||
(fn [_
|
||||
[{sent-transactions :sentTransactions
|
||||
send-details :sendDetails}]]
|
||||
{:fx [[:dispatch
|
||||
[:wallet/show-transaction-notification
|
||||
{:status :status-changed
|
||||
:send-details send-details
|
||||
:sent-transaction (first sent-transactions)}]]]}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/show-transaction-notification
|
||||
(fn [{:keys [db]} [{:keys [status send-details sent-transaction]}]]
|
||||
(let [{:keys [error send-type]
|
||||
:as details}
|
||||
(as-> (utils/details-map send-details sent-transaction) $
|
||||
(assoc $ :error (get-in send-details [:ErrorResponse :details]))
|
||||
(assoc $ :account-from-name (utils/contact-name-by-address db (:address-from $)))
|
||||
(assoc $ :account-to-name (utils/contact-name-by-address db (:address-to $)))
|
||||
(assoc $
|
||||
:tx-to-name
|
||||
(or (utils/tx-to-name (:send-type $))
|
||||
(utils/contact-name-by-address db (:tx-to $)))))]
|
||||
(cond
|
||||
;; handle errors and show notifications about errors
|
||||
error
|
||||
(do
|
||||
(log/warn "Error when sending transaction" details)
|
||||
{:fx [[:dispatch
|
||||
[:toasts/upsert
|
||||
{:id (keyword (str status "-failure"))
|
||||
:type :negative
|
||||
:text error}]]]})
|
||||
|
||||
;; handle swap notifications in a separate fx
|
||||
(= send-type constants/send-type-swap)
|
||||
{:fx [[:dispatch
|
||||
[:wallet.swap/show-transaction-notification
|
||||
{:status status
|
||||
:send-details details}]]]}))))
|
||||
|
||||
|
||||
@@ -135,13 +135,7 @@
|
||||
cards (conj account-cards-data (new-account-card-data))
|
||||
[init-loaded? set-init-loaded] (rn/use-state false)
|
||||
{:keys [formatted-balance]} (rf/sub [:wallet/aggregated-token-values-and-balance])
|
||||
theme (quo.theme/use-theme)
|
||||
show-new-chain-indicator? (rf/sub [:wallet/show-new-chain-indicator?])
|
||||
on-press-network-selector (rn/use-callback
|
||||
(fn []
|
||||
(rf/dispatch [:wallet/hide-new-chain-indicator])
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content network-filter/view}])))]
|
||||
theme (quo.theme/use-theme)]
|
||||
(rn/use-effect (fn []
|
||||
(when (and @account-list-ref (pos? (count cards)))
|
||||
(.scrollToOffset ^js @account-list-ref
|
||||
@@ -163,14 +157,13 @@
|
||||
:on-refresh #(rf/dispatch [:wallet/get-accounts])}]
|
||||
:header [rn/view {:style (style/header-container theme)}
|
||||
[quo/wallet-overview
|
||||
{:state (if tokens-loading? :loading :default)
|
||||
:time-frame :none
|
||||
:metrics :none
|
||||
:balance formatted-balance
|
||||
:networks networks
|
||||
:dropdown-on-press on-press-network-selector
|
||||
:show-new-chain-indicator? (when (not-empty networks)
|
||||
show-new-chain-indicator?)}]
|
||||
{:state (if tokens-loading? :loading :default)
|
||||
:time-frame :none
|
||||
:metrics :none
|
||||
:balance formatted-balance
|
||||
:networks networks
|
||||
:dropdown-on-press #(rf/dispatch [:show-bottom-sheet
|
||||
{:content network-filter/view}])}]
|
||||
(when (ff/enabled? ::ff/wallet.graph)
|
||||
[quo/wallet-graph {:time-frame :empty}])
|
||||
[render-cards cards account-list-ref]
|
||||
|
||||
@@ -546,7 +546,6 @@
|
||||
token-decimal (when token (:decimals token))
|
||||
token-id (utils/format-token-id token collectible)
|
||||
to-token-id ""
|
||||
gas-rates constants/gas-rate-medium
|
||||
to-hex (fn [v] (send-utils/amount-in-hex v (if token token-decimal 0)))
|
||||
amount-in (to-hex amount)
|
||||
amount-out (to-hex amount-out)
|
||||
@@ -582,10 +581,11 @@
|
||||
:amountIn amount-in
|
||||
:amountOut amount-out
|
||||
:tokenID token-id
|
||||
:tokenIDIsOwnerToken false
|
||||
:toTokenID to-token-id
|
||||
:disabledFromChainIDs disabled-from-chain-ids
|
||||
:disabledToChainIDs disabled-to-chain-ids
|
||||
:gasFeeMode gas-rates
|
||||
:gasFeeMode constants/gas-rate-medium
|
||||
:fromLockedAmount {}
|
||||
:username (:username args)
|
||||
:publicKey (:publicKey args)
|
||||
@@ -660,19 +660,20 @@
|
||||
(update :best best-routes-fix)
|
||||
(update :candidates candidates-fix)))
|
||||
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/handle-suggested-routes
|
||||
(fn [{:keys [db]} [data]]
|
||||
(let [{send :send swap? :swap} (-> db :wallet :ui)
|
||||
skip-processing-routes? (:skip-processing-suggested-routes? send)
|
||||
clean-user-tx-settings? (get-in db
|
||||
[:wallet :ui :send :custom-tx-settings
|
||||
:delete-on-routes-update?])]
|
||||
(when (or swap? (not skip-processing-routes?))
|
||||
(let [{:keys [send swap]} (-> db :wallet :ui)
|
||||
skip-processing-routes? (:skip-processing-suggested-routes? send)
|
||||
clean-user-tx-settings? (get-in db
|
||||
[:wallet :ui :send :custom-tx-settings
|
||||
:delete-on-routes-update?])]
|
||||
(when (or swap (not skip-processing-routes?))
|
||||
(let [{error-code :code
|
||||
:as error} (:ErrorResponse data)
|
||||
enough-assets? (not (and (:Best data) (= error-code "WR-002")))
|
||||
failure? (and error enough-assets? (not swap?))
|
||||
failure? (and error enough-assets? (not swap))
|
||||
error-message (if (zero? error-code) "An error occurred" (:details error))]
|
||||
(when failure?
|
||||
(log/error "failed to get suggested routes (async)"
|
||||
@@ -683,11 +684,11 @@
|
||||
{:db (update-in db [:wallet :ui :send] dissoc :custom-tx-settings)})
|
||||
{:fx [[:dispatch
|
||||
(cond
|
||||
(and failure? swap?) [:wallet/swap-proposal-error error]
|
||||
failure? [:wallet/suggested-routes-error error-message]
|
||||
swap? [:wallet/swap-proposal-success (fix-routes data)]
|
||||
:else [:wallet/suggested-routes-success (fix-routes data)
|
||||
enough-assets?])]]}))))))
|
||||
(and failure? swap) [:wallet/swap-proposal-error error]
|
||||
failure? [:wallet/suggested-routes-error error-message]
|
||||
swap [:wallet/swap-proposal-success (fix-routes data)]
|
||||
:else [:wallet/suggested-routes-success (fix-routes data)
|
||||
enough-assets?])]]}))))))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/transaction-success
|
||||
@@ -711,16 +712,14 @@
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/transaction-failure
|
||||
(fn [_ [{:keys [details]}]]
|
||||
{:fx [[:dispatch [:wallet/end-transaction-flow]]
|
||||
[:dispatch-later
|
||||
[{:ms 2000
|
||||
:dispatch [:wallet/stop-and-clean-suggested-routes]}]]
|
||||
[:dispatch
|
||||
[:toasts/upsert
|
||||
{:id :send-transaction-failure
|
||||
:type :negative
|
||||
:text (or details "An error occured")}]]]}))
|
||||
(fn [_ [send-details]]
|
||||
(if (= (:sendType send-details) constants/send-type-swap)
|
||||
{:fx [[:dispatch [:wallet.swap/track-transaction-execution-failed (:errorResponse send-details)]]
|
||||
[:dispatch [:wallet.swap/end-transaction-flow]]]}
|
||||
{:fx [[:dispatch [:wallet/end-transaction-flow]]
|
||||
[:dispatch-later
|
||||
[{:ms 2000
|
||||
:dispatch [:wallet/stop-and-clean-suggested-routes]}]]]})))
|
||||
|
||||
(rf/reg-event-fx :wallet/clean-just-completed-transaction
|
||||
(fn [{:keys [db]}]
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
:network-name :mainnet
|
||||
:chain-id 1
|
||||
:related-chain-id 5}]
|
||||
:wallet/show-new-chain-indicator? false
|
||||
:wallet/current-viewing-account-address "0x1"
|
||||
:wallet/current-viewing-account {:path "m/44'/60'/0'/0/1"
|
||||
:emoji "💎"
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
(fn [clipboard]
|
||||
(when-not (empty? clipboard)
|
||||
(-> clipboard
|
||||
utils/on-paste-address-or-ens
|
||||
utils-address/extract-address-without-chains-info
|
||||
on-change)))))
|
||||
:ens-regex constants/regx-ens
|
||||
:scanned-value (or (when recipient-plain-address? send-address) scanned-address)
|
||||
|
||||
@@ -8,26 +8,41 @@
|
||||
(defn view
|
||||
[]
|
||||
(let [selected-networks (rf/sub [:wallet/selected-networks])
|
||||
selector-state (rf/sub [:wallet/network-filter-selector-state])
|
||||
color (rf/sub [:profile/customization-color])
|
||||
network-details (rf/sub [:wallet/network-details])]
|
||||
network-details (rf/sub [:wallet/network-details])
|
||||
viewing-account? (rf/sub [:wallet/viewing-account?])
|
||||
balance-per-chain (if viewing-account?
|
||||
(rf/sub [:wallet/current-viewing-account-fiat-balance-per-chain])
|
||||
(rf/sub [:wallet/aggregated-fiat-balance-per-chain]))
|
||||
mainnet (first network-details)
|
||||
layer-2-networks (rest network-details)]
|
||||
[:<>
|
||||
[quo/drawer-top {:title (i18n/label :t/select-networks)}]
|
||||
[quo/information-box
|
||||
{:type :informative
|
||||
:icon :i/info
|
||||
:blur? false
|
||||
:style {:margin-horizontal 20
|
||||
:margin-bottom 4}}
|
||||
(i18n/label :t/base-chain-available-info)]
|
||||
[quo/category
|
||||
{:list-type :settings
|
||||
:data [(utils/make-network-item
|
||||
{:state selector-state
|
||||
:network-name (:network-name mainnet)
|
||||
:color color
|
||||
:networks selected-networks
|
||||
:label-props (get balance-per-chain (:chain-id mainnet))
|
||||
:on-change #(rf/dispatch
|
||||
[:wallet/update-selected-networks
|
||||
(:network-name
|
||||
mainnet)])})]}]
|
||||
[quo/category
|
||||
{:list-type :settings
|
||||
:label (i18n/label :t/layer-2)
|
||||
:data (mapv (fn [network]
|
||||
(utils/make-network-item
|
||||
{:network-name (:network-name network)
|
||||
{:state selector-state
|
||||
:network-name (:network-name network)
|
||||
:color color
|
||||
:networks selected-networks
|
||||
:label-props (get balance-per-chain (:chain-id network))
|
||||
:on-change #(rf/dispatch
|
||||
[:wallet/update-selected-networks
|
||||
(:network-name
|
||||
network)])}))
|
||||
network-details)}]]))
|
||||
layer-2-networks)}]]))
|
||||
|
||||
@@ -249,13 +249,15 @@
|
||||
|
||||
(rf/reg-event-fx :wallet/stop-get-swap-proposal
|
||||
(fn [{:keys [db]}]
|
||||
{:db (update-in db [:wallet :ui :swap] dissoc :last-request-uuid)
|
||||
:json-rpc/call [{:method "wallet_stopSuggestedRoutesAsyncCalculation"
|
||||
:params []
|
||||
:on-error (fn [error]
|
||||
(log/error "failed to stop fetching swap proposals"
|
||||
{:event :wallet/stop-get-swap-proposal
|
||||
:error error}))}]}))
|
||||
(let [route-request-ongoing? (some? (get-in db [:wallet :ui :swap :last-request-uuid]))]
|
||||
(when route-request-ongoing?
|
||||
{:db (update-in db [:wallet :ui :swap] dissoc :last-request-uuid)
|
||||
:json-rpc/call [{:method "wallet_stopSuggestedRoutesAsyncCalculation"
|
||||
:params []
|
||||
:on-error (fn [error]
|
||||
(log/error "failed to stop fetching swap proposals"
|
||||
{:event :wallet/stop-get-swap-proposal
|
||||
:error error}))}]}))))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet/clean-swap-proposal
|
||||
@@ -430,16 +432,6 @@
|
||||
[:wallet.swap/set-sign-transactions-callback-fx
|
||||
[:dispatch [:wallet/prepare-signatures-for-transactions :swap]]]]]})))
|
||||
|
||||
(defn transaction-approval-required?
|
||||
[transactions {:keys [swap-proposal approval-transaction-id]}]
|
||||
(let [approval-transaction (when approval-transaction-id
|
||||
(get transactions approval-transaction-id))
|
||||
already-approved? (and approval-transaction
|
||||
(= (:status approval-transaction)
|
||||
:confirmed))]
|
||||
(and (:approval-required swap-proposal)
|
||||
(not already-approved?))))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet.swap/mark-as-pending
|
||||
(fn [{:keys [db]} [transaction-id]]
|
||||
@@ -466,7 +458,7 @@
|
||||
(-> amount-out
|
||||
(number/hex->whole receive-token-decimals)
|
||||
(money/to-fixed receive-token-decimals)))
|
||||
approval-required? (transaction-approval-required? transactions swap)]
|
||||
approval-required? (utils/transaction-approval-required? transactions swap)]
|
||||
{:fx [[:dispatch
|
||||
[:centralized-metrics/track
|
||||
(if approval-required?
|
||||
@@ -494,23 +486,11 @@
|
||||
[:dispatch [:wallet.swap/mark-as-pending (-> sent-transactions first :hash)]])
|
||||
(when-not approval-required?
|
||||
;; just end the whole transaction flow if no approval needed
|
||||
[:dispatch [:wallet.swap/end-transaction-flow]])
|
||||
(when-not approval-required?
|
||||
[:dispatch-later
|
||||
{:ms 500
|
||||
:dispatch [:toasts/upsert
|
||||
{:id :swap-transaction-pending
|
||||
:icon :i/info
|
||||
:type :neutral
|
||||
:text (i18n/label :t/swapping-to
|
||||
{:pay-amount amount
|
||||
:pay-token-symbol token-id-from
|
||||
:receive-token-symbol token-id-to
|
||||
:receive-amount receive-amount})}]}])]})))
|
||||
[:dispatch [:wallet.swap/end-transaction-flow]])]})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet.swap/transaction-failure
|
||||
(fn [{:keys [db]} [{:keys [details] :as error}]]
|
||||
:wallet.swap/track-transaction-execution-failed
|
||||
(fn [{:keys [db]} [error]]
|
||||
(let [transactions (get-in db [:wallet :transactions])
|
||||
{:keys [asset-to-pay
|
||||
asset-to-receive
|
||||
@@ -519,7 +499,7 @@
|
||||
swap-chain-id (:chain-id network)
|
||||
token-id-from (:symbol asset-to-pay)
|
||||
token-id-to (:symbol asset-to-receive)
|
||||
approval-required? (transaction-approval-required? transactions swap)]
|
||||
approval-required? (utils/transaction-approval-required? transactions swap)]
|
||||
{:fx [[:centralized-metrics/track
|
||||
(if approval-required?
|
||||
:metric/swap-approval-execution-failed
|
||||
@@ -528,20 +508,14 @@
|
||||
:error error
|
||||
:pay_token token-id-from}
|
||||
(not approval-required?)
|
||||
(assoc :receive_token token-id-to))]
|
||||
[:dispatch [:wallet.swap/end-transaction-flow]]
|
||||
[:dispatch
|
||||
[:toasts/upsert
|
||||
{:id :send-transaction-error
|
||||
:type :negative
|
||||
:text (or details "An error occured")}]]]})))
|
||||
(assoc :receive_token token-id-to))]]})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet.swap/clean-up-transaction-flow
|
||||
(fn [{:keys [db]}]
|
||||
(let [transactions (get-in db [:wallet :transactions])
|
||||
swap (get-in db [:wallet :ui :swap])
|
||||
approval-required? (transaction-approval-required? transactions swap)]
|
||||
approval-required? (utils/transaction-approval-required? transactions swap)]
|
||||
{:db (update-in db [:wallet :ui] dissoc :swap)
|
||||
:fx [[:dispatch
|
||||
[:dismiss-modal
|
||||
@@ -575,3 +549,29 @@
|
||||
[:dispatch
|
||||
[:navigate-to-within-stack
|
||||
[:screen/wallet.swap-select-asset-to-pay :screen/wallet.swap-select-account]]]])})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet.swap/show-transaction-notification
|
||||
(fn [{:keys [db]} [{:keys [status send-details]}]]
|
||||
(let [transactions (get-in db [:wallet :transactions])
|
||||
{:keys [asset-to-pay asset-to-receive] :as swap} (get-in db [:wallet :ui :swap])]
|
||||
;; show toast when approval is not required
|
||||
(when (and (= status :sent)
|
||||
(not (utils/transaction-approval-required? transactions swap)))
|
||||
{:fx [[:dispatch-later
|
||||
{:ms 500
|
||||
:dispatch [:toasts/upsert
|
||||
{:id :swap-transaction-pending
|
||||
:icon :i/info
|
||||
:type :neutral
|
||||
:text (i18n/label :t/swapping-to
|
||||
{:pay-amount (-> send-details
|
||||
:from-amount
|
||||
(money/token->unit
|
||||
(:decimals asset-to-pay)))
|
||||
:receive-amount (-> send-details
|
||||
:to-amount
|
||||
(money/token->unit
|
||||
(:decimals asset-to-receive)))
|
||||
:pay-token-symbol (:from-asset send-details)
|
||||
:receive-token-symbol (:to-asset send-details)})}]}]]}))))
|
||||
|
||||
@@ -78,6 +78,4 @@
|
||||
;;app starting flow continues in get-profiles-overview
|
||||
:profile/get-profiles-overview #(rf/dispatch [:profile/get-profiles-overview-success %])
|
||||
:effects.font/get-font-file-for-initials-avatar
|
||||
#(rf/dispatch [:font/init-font-file-for-initials-avatar %])
|
||||
;; show new chain indicator to highlight base chain. This will be be removed in v2.35.
|
||||
:effects.wallet/retrieve-base-chain-indicator-shown nil}))
|
||||
#(rf/dispatch [:font/init-font-file-for-initials-avatar %])}))
|
||||
|
||||
@@ -47,11 +47,6 @@
|
||||
:<- [:wallet/ui]
|
||||
:-> :last-updates-per-address)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/show-new-chain-indicator?
|
||||
:<- [:wallet/ui]
|
||||
:-> :show-new-chain-indicator?)
|
||||
|
||||
(rf/reg-sub
|
||||
:wallet/latest-update
|
||||
:<- [:wallet/last-updates-per-address]
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"_comment": "Instead use: scripts/update-status-go.sh <rev>",
|
||||
"owner": "status-im",
|
||||
"repo": "status-go",
|
||||
"version": "v10.7.0+hotfix.2",
|
||||
"commit-sha1": "595dc68e9ff5e6e57364818098616a97b83eabd5",
|
||||
"src-sha256": "04dsmz70h3i738bj3i3ba8bckpw61vxb56m8sc4qw8agc9pdaxc0"
|
||||
"version": "v10.8.0",
|
||||
"commit-sha1": "ba8fd51958686aea45e34e684ac925a4e65927f8",
|
||||
"src-sha256": "0kqn5rkfsn7aqc2n2flqvkm6cc53ssk0mc1l84f4czg0paci0717"
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ class TestWalletCollectibles(MultipleSharedDeviceTestCase):
|
||||
@marks.testrail_id(741839)
|
||||
def test_wallet_collectibles_balance(self):
|
||||
self.wallet_view.collectibles_tab.click()
|
||||
self.wallet_view.set_network_in_wallet(self.network_name + ', NEW')
|
||||
self.wallet_view.set_network_in_wallet(self.network_name)
|
||||
collectibles = {
|
||||
"BVL": {"quantity": 2,
|
||||
"info": {"Account": "Account 1",
|
||||
|
||||
@@ -52,7 +52,7 @@ class TestWalletOneDevice(MultipleSharedDeviceTestCase):
|
||||
'Mainnet': self.mainnet_balance,
|
||||
'Arbitrum': self.arb_balance,
|
||||
'Optimism': self.optimism_balance,
|
||||
'Base, NEW': self.base_balance
|
||||
'Base': self.base_balance
|
||||
}
|
||||
|
||||
for network in expected_balances:
|
||||
|
||||
@@ -182,7 +182,7 @@ class WalletView(BaseView):
|
||||
|
||||
def set_network_in_wallet(self, network_name: str):
|
||||
self.network_drop_down.click()
|
||||
Button(self.driver, accessibility_id="%s, label-component" % network_name).click()
|
||||
Button(self.driver, accessibility_id="%s, label-component" % network_name.capitalize()).click()
|
||||
self.network_drop_down.click()
|
||||
|
||||
def get_account_element(self, account_name: str = 'Account 1'):
|
||||
|
||||
@@ -200,7 +200,6 @@
|
||||
"bad-fees-description": "Your priority fee is below our suggested parameters.",
|
||||
"balance": "Balance",
|
||||
"base": "Base",
|
||||
"base-chain-available-info": "Base chain is now on Status - view your assets, interact with dApps and swap tokens",
|
||||
"be-safe-with-secure-cold-wallet": "Be safe with secure cold wallet",
|
||||
"begin-set-up": "Begin setup",
|
||||
"below-base-fee": "max fee below base fee",
|
||||
|
||||
Reference in New Issue
Block a user