Strip out eip-3770 prefixes when scan qr (#21256)
This commit is contained in:
parent
699986c0b2
commit
7cad13c3c7
|
@ -84,7 +84,7 @@
|
|||
(load-and-show-profile scanned-text)
|
||||
|
||||
(utils-address/supported-address? scanned-text)
|
||||
(when-let [address (utils-address/supported-address->status-address scanned-text)]
|
||||
(when-let [address (utils-address/supported-address->eth-address scanned-text)]
|
||||
(debounce/debounce-and-dispatch [:generic-scanner/scan-success address] 300)
|
||||
(debounce/debounce-and-dispatch [:navigate-change-tab :wallet-stack] 300))
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
:error-message (i18n/label :t/oops-this-qr-does-not-contain-an-address)
|
||||
:validate-fn #(utils-address/supported-address? %)
|
||||
:on-success-scan (fn [result]
|
||||
(let [address (utils-address/supported-address->status-address result)]
|
||||
(let [address (utils-address/supported-address->eth-address result)]
|
||||
(when on-result (on-result address))
|
||||
(debounce/debounce-and-dispatch
|
||||
[:wallet/scan-address-success address]
|
||||
|
|
|
@ -101,30 +101,39 @@
|
|||
|
||||
(defn eip-3770-address?
|
||||
"Checks if address follows EIP-3770 format which is default for Status"
|
||||
[s]
|
||||
(re-find regx-eip-3770-address s))
|
||||
[address]
|
||||
(re-find regx-eip-3770-address address))
|
||||
|
||||
(defn supported-address?
|
||||
[s]
|
||||
(boolean (or (eip-3770-address? s)
|
||||
(metamask-address? s))))
|
||||
|
||||
(defn metamask-address->status-address
|
||||
(defn metamask-address->eip-3770-address
|
||||
[metamask-address]
|
||||
(when-let [[_ address metamask-network-suffix] (split-metamask-address metamask-address)]
|
||||
(if-let [status-network-prefix (eip-155-suffix->eip-3770-prefix metamask-network-suffix)]
|
||||
(str status-network-prefix address)
|
||||
address)))
|
||||
|
||||
(defn supported-address->status-address
|
||||
[address]
|
||||
(cond
|
||||
(eip-3770-address? address)
|
||||
address
|
||||
|
||||
(metamask-address? address)
|
||||
(metamask-address->status-address address)))
|
||||
|
||||
(defn extract-address-without-chains-info
|
||||
[address]
|
||||
(re-find regx-address-contains address))
|
||||
|
||||
(defn metamask-address->eth-address
|
||||
[eip-3770-address]
|
||||
(extract-address-without-chains-info eip-3770-address))
|
||||
|
||||
(defn eip-3770-address->eth-address
|
||||
[eip-3770-address]
|
||||
(extract-address-without-chains-info eip-3770-address))
|
||||
|
||||
(defn supported-address->eth-address
|
||||
[address]
|
||||
(cond
|
||||
(eip-3770-address? address)
|
||||
(eip-3770-address->eth-address address)
|
||||
|
||||
(metamask-address? address)
|
||||
(metamask-address->eth-address address)))
|
||||
|
||||
|
|
|
@ -46,6 +46,19 @@
|
|||
"ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0xa"
|
||||
"ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"])
|
||||
|
||||
(def valid-eip-3770-addresses
|
||||
["0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
"eth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
"eth:arb1:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
"eth:arb1:oeth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"])
|
||||
|
||||
(def invalid-eip-3770-addresses
|
||||
["0x+38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
"eth3:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
":eth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
"0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2:eth"
|
||||
"eth:arb10x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"])
|
||||
|
||||
(def invalid-metamask-addresses
|
||||
["ethe:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0x1"
|
||||
":0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0xa4b1"
|
||||
|
@ -54,13 +67,29 @@
|
|||
"ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd20xa4b1"
|
||||
"ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2:0xa"])
|
||||
|
||||
(def metamask-to-eip-3770
|
||||
[{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0x1"
|
||||
:eip-3770 "eth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0xa4b1"
|
||||
:eip-3770 "arb1:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0xa"
|
||||
:eip-3770 "oeth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
:eip-3770 "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:metamask "ethe:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0x1" :eip-3770 nil}
|
||||
{:metamask ":0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0xa4b1" :eip-3770 nil}
|
||||
{:metamask "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0xa" :eip-3770 nil}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0x1d" :eip-3770 nil}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd20xa4b1" :eip-3770 nil}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2:0xa" :eip-3770 nil}])
|
||||
|
||||
(def metamask-to-status
|
||||
[{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0x1"
|
||||
:status "eth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
:status "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0xa4b1"
|
||||
:status "arb1:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
:status "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0xa"
|
||||
:status "oeth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
:status "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
:status "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:metamask "ethe:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2@0x1" :status nil}
|
||||
|
@ -70,6 +99,26 @@
|
|||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd20xa4b1" :status nil}
|
||||
{:metamask "ethereum:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2:0xa" :status nil}])
|
||||
|
||||
(def eip-3770-to-status
|
||||
[{:eip-3770 "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
:status "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:eip-3770 "eth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
:status "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:eip-3770 "eth:arb1:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
:status "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:eip-3770 "eth:arb1:oeth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"
|
||||
:status "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:status nil
|
||||
:eip-3770 "0x+38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:status nil
|
||||
:eip-3770 "eth3:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:status nil
|
||||
:eip-3770 ":eth:0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}
|
||||
{:status nil
|
||||
:eip-3770 "0x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2:eth"}
|
||||
{:status nil
|
||||
:eip-3770 "eth:arb10x38cf6E0Ba4C4530735616e1Ee7ff5FbCB726fBd2"}])
|
||||
|
||||
(deftest metamask-address?-test
|
||||
(testing "Check valid metamask addresses"
|
||||
(dorun
|
||||
|
@ -80,9 +129,33 @@
|
|||
(for [address invalid-metamask-addresses]
|
||||
(is (not (utils.address/metamask-address? address)))))))
|
||||
|
||||
(deftest metamask-address->status-address-test
|
||||
(deftest eip-3770-address?-test
|
||||
(testing "Check valid eip-3770 addresses"
|
||||
(dorun
|
||||
(for [address valid-eip-3770-addresses]
|
||||
(is (utils.address/eip-3770-address? address)))))
|
||||
(testing "Check invalid eip-3770 addresses"
|
||||
(dorun
|
||||
(for [address invalid-eip-3770-addresses]
|
||||
(is (not (utils.address/metamask-address? address)))))))
|
||||
|
||||
(deftest metamask-address->eip-3770-address-test
|
||||
(testing "Check metamask to status address conversion is valid"
|
||||
(dorun
|
||||
(for [{metamask-address :metamask
|
||||
eip-3770-address :eip-3770} metamask-to-eip-3770]
|
||||
(is (= eip-3770-address (utils.address/metamask-address->eip-3770-address metamask-address)))))))
|
||||
|
||||
|
||||
(deftest supported-address->status-address-test
|
||||
(testing "Check metamask to status address conversion is valid"
|
||||
(dorun
|
||||
(for [{metamask-address :metamask
|
||||
status-address :status} metamask-to-status]
|
||||
(is (= status-address (utils.address/metamask-address->status-address metamask-address)))))))
|
||||
(is (= status-address (utils.address/supported-address->eth-address metamask-address))))))
|
||||
(testing "Check eip-3770 to status address conversion is valid"
|
||||
(dorun
|
||||
(for [{eip-3770-address :eip-3770
|
||||
status-address :status} eip-3770-to-status]
|
||||
(is (= status-address (utils.address/supported-address->eth-address eip-3770-address)))))))
|
||||
|
||||
|
|
Loading…
Reference in New Issue