parent
006b637b1b
commit
f2c69ab9a8
|
@ -37,6 +37,34 @@
|
||||||
(map (comp :raw-balance val))
|
(map (comp :raw-balance val))
|
||||||
(reduce money/add)))
|
(reduce money/add)))
|
||||||
|
|
||||||
|
(defn extract-exponent
|
||||||
|
[s]
|
||||||
|
(if-let [index (string/index-of s "e")]
|
||||||
|
(subs s (+ index 2))
|
||||||
|
nil))
|
||||||
|
|
||||||
|
(defn calc-max-crypto-decimals
|
||||||
|
[value]
|
||||||
|
(let [str-representation (str value)
|
||||||
|
decimal-part (second (clojure.string/split str-representation #"\."))
|
||||||
|
exponent (extract-exponent str-representation)
|
||||||
|
zeroes-count (count (take-while #(= \0 %) decimal-part))
|
||||||
|
max-decimals (or exponent zeroes-count)
|
||||||
|
first-non-zero-digit (first (filter #(not (= \0 %)) decimal-part))]
|
||||||
|
(if (= \1 first-non-zero-digit)
|
||||||
|
(inc max-decimals)
|
||||||
|
max-decimals)))
|
||||||
|
|
||||||
|
(defn get-standard-crypto-format
|
||||||
|
"For full details: https://github.com/status-im/status-mobile/issues/18225"
|
||||||
|
[{:keys [market-values-per-currency]} token-units]
|
||||||
|
(let [price (get-in market-values-per-currency [:usd :price])
|
||||||
|
one-cent-value (if (pos? price) (/ 0.01 price) 0)
|
||||||
|
decimals-count (calc-max-crypto-decimals one-cent-value)]
|
||||||
|
(if (< token-units one-cent-value)
|
||||||
|
(str "<" (.toFixed one-cent-value decimals-count))
|
||||||
|
(.toFixed token-units decimals-count))))
|
||||||
|
|
||||||
(defn total-token-units-in-all-chains
|
(defn total-token-units-in-all-chains
|
||||||
[{:keys [balances-per-chain decimals] :as _token}]
|
[{:keys [balances-per-chain decimals] :as _token}]
|
||||||
(-> balances-per-chain
|
(-> balances-per-chain
|
||||||
|
|
|
@ -16,3 +16,18 @@
|
||||||
|
|
||||||
(is (= (utils/get-wallet-qr wallet-singlechain)
|
(is (= (utils/get-wallet-qr wallet-singlechain)
|
||||||
"x000")))))
|
"x000")))))
|
||||||
|
|
||||||
|
(deftest test-extract-exponent
|
||||||
|
(testing "extract-exponent function"
|
||||||
|
(is (= (utils/extract-exponent "123.456") nil))
|
||||||
|
(is (= (utils/extract-exponent "2.5e-2") "2"))
|
||||||
|
(is (= (utils/extract-exponent "4.567e-10") "10"))))
|
||||||
|
|
||||||
|
(deftest test-calc-max-crypto-decimals
|
||||||
|
(testing "calc-max-crypto-decimals function"
|
||||||
|
(is (= (utils/calc-max-crypto-decimals 0.00323) 2))
|
||||||
|
(is (= (utils/calc-max-crypto-decimals 0.00123) 3))
|
||||||
|
(is (= (utils/calc-max-crypto-decimals 0.00000423) 5))
|
||||||
|
(is (= (utils/calc-max-crypto-decimals 2.23e-6) 5))
|
||||||
|
(is (= (utils/calc-max-crypto-decimals 1.13e-6) 6))))
|
||||||
|
|
||||||
|
|
|
@ -171,7 +171,11 @@
|
||||||
currency
|
currency
|
||||||
(get market-values-per-currency
|
(get market-values-per-currency
|
||||||
constants/profile-default-currency))
|
constants/profile-default-currency))
|
||||||
{:keys [change-pct-24hour]} market-values]
|
{:keys [change-pct-24hour]} market-values
|
||||||
|
crypto-value (utils/get-standard-crypto-format token token-units)
|
||||||
|
fiat-value (if (string/includes? crypto-value "<")
|
||||||
|
"<$0.01"
|
||||||
|
(utils/prettify-balance currency-symbol fiat-value))]
|
||||||
{:token (:symbol token)
|
{:token (:symbol token)
|
||||||
:token-name (:name token)
|
:token-name (:name token)
|
||||||
:state :default
|
:state :default
|
||||||
|
@ -180,8 +184,8 @@
|
||||||
(neg? change-pct-24hour) :negative
|
(neg? change-pct-24hour) :negative
|
||||||
:else :empty)
|
:else :empty)
|
||||||
:customization-color color
|
:customization-color color
|
||||||
:values {:crypto-value token-units
|
:values {:crypto-value crypto-value
|
||||||
:fiat-value (utils/prettify-balance currency-symbol fiat-value)}}))
|
:fiat-value fiat-value}}))
|
||||||
|
|
||||||
(rf/reg-sub
|
(rf/reg-sub
|
||||||
:wallet/account-token-values
|
:wallet/account-token-values
|
||||||
|
|
Loading…
Reference in New Issue