From 31fdb3968364dc8a786df22d927bb8d19a0b2289 Mon Sep 17 00:00:00 2001 From: Andrey Shovkoplyas Date: Fri, 12 Oct 2018 11:41:48 +0200 Subject: [PATCH] [#6149] Add support for KudosTokens Signed-off-by: Andrey Shovkoplyas --- resources/images/tokens/mainnet/KUDOS.png | Bin 0 -> 1622 bytes resources/images/tokens/mainnet/KUDOS@2x.png | Bin 0 -> 2977 bytes resources/images/tokens/mainnet/KUDOS@3x.png | Bin 0 -> 4407 bytes resources/images/tokens/rinkeby/KUDOS.png | Bin 0 -> 1622 bytes resources/images/tokens/rinkeby/KUDOS@2x.png | Bin 0 -> 2977 bytes resources/images/tokens/rinkeby/KUDOS@3x.png | Bin 0 -> 4407 bytes src/status_im/constants.cljs | 2 +- src/status_im/ui/screens/events.cljs | 1 + .../collectibles/cryptokitties/events.cljs | 2 +- .../collectibles/cryptostrikers/events.cljs | 2 +- .../wallet/collectibles/etheremon/events.cljs | 2 +- .../screens/wallet/collectibles/events.cljs | 28 ++++++++------ .../wallet/collectibles/kudos/events.cljs | 36 ++++++++++++++++++ .../wallet/collectibles/kudos/views.cljs | 27 +++++++++++++ .../wallet/collectibles/superrare/events.cljs | 4 +- .../ui/screens/wallet/main/views.cljs | 1 + src/status_im/utils/ethereum/core.cljs | 10 ++++- src/status_im/utils/ethereum/erc721.cljs | 9 +++++ src/status_im/utils/ethereum/tokens.cljs | 12 +++++- translations/en.json | 1 + 20 files changed, 116 insertions(+), 21 deletions(-) create mode 100644 resources/images/tokens/mainnet/KUDOS.png create mode 100644 resources/images/tokens/mainnet/KUDOS@2x.png create mode 100644 resources/images/tokens/mainnet/KUDOS@3x.png create mode 100644 resources/images/tokens/rinkeby/KUDOS.png create mode 100644 resources/images/tokens/rinkeby/KUDOS@2x.png create mode 100644 resources/images/tokens/rinkeby/KUDOS@3x.png create mode 100644 src/status_im/ui/screens/wallet/collectibles/kudos/events.cljs create mode 100644 src/status_im/ui/screens/wallet/collectibles/kudos/views.cljs diff --git a/resources/images/tokens/mainnet/KUDOS.png b/resources/images/tokens/mainnet/KUDOS.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cdccc33312e6a72694117d30aaae8dae162cb5 GIT binary patch literal 1622 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 XRa1cAi+h^400000NkvXXu0mjfj02Pi literal 0 HcmV?d00001 diff --git a/resources/images/tokens/mainnet/KUDOS@3x.png b/resources/images/tokens/mainnet/KUDOS@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7307195b644e1ac8a1c5b9493dc28445ac6ce7d8 GIT binary patch literal 4407 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 literal 0 HcmV?d00001 diff --git a/resources/images/tokens/rinkeby/KUDOS.png b/resources/images/tokens/rinkeby/KUDOS.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cdccc33312e6a72694117d30aaae8dae162cb5 GIT binary patch literal 1622 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 XRa1cAi+h^400000NkvXXu0mjfj02Pi literal 0 HcmV?d00001 diff --git a/resources/images/tokens/rinkeby/KUDOS@3x.png b/resources/images/tokens/rinkeby/KUDOS@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7307195b644e1ac8a1c5b9493dc28445ac6ce7d8 GIT binary patch literal 4407 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 literal 0 HcmV?d00001 diff --git a/src/status_im/constants.cljs b/src/status_im/constants.cljs index 7fc414730e..bb67abd20c 100644 --- a/src/status_im/constants.cljs +++ b/src/status_im/constants.cljs @@ -88,7 +88,7 @@ (defn default-account-settings [] {:wallet {:visible-tokens {:testnet #{:STT :HND} :mainnet #{:SNT} - :rinkeby #{:MOKSHA}}}}) + :rinkeby #{:MOKSHA :KUDOS}}}}) (def currencies {:aed {:id :aed :code "AED" :display-name (i18n/label :t/currency-display-name-aed) :symbol "د.إ"} diff --git a/src/status_im/ui/screens/events.cljs b/src/status_im/ui/screens/events.cljs index ddc00b3c8d..dd346a8c61 100644 --- a/src/status_im/ui/screens/events.cljs +++ b/src/status_im/ui/screens/events.cljs @@ -21,6 +21,7 @@ status-im.ui.screens.wallet.collectibles.cryptostrikers.events status-im.ui.screens.wallet.collectibles.etheremon.events status-im.ui.screens.wallet.collectibles.superrare.events + status-im.ui.screens.wallet.collectibles.kudos.events status-im.utils.keychain.events [re-frame.core :as re-frame] [status-im.hardwallet.core :as hardwallet] diff --git a/src/status_im/ui/screens/wallet/collectibles/cryptokitties/events.cljs b/src/status_im/ui/screens/wallet/collectibles/cryptokitties/events.cljs index 6325389839..0f62201147 100644 --- a/src/status_im/ui/screens/wallet/collectibles/cryptokitties/events.cljs +++ b/src/status_im/ui/screens/wallet/collectibles/cryptokitties/events.cljs @@ -18,7 +18,7 @@ ids)})) ;; TODO(andrey) Each HTTP call will return up to 100 kitties. Maybe we need to implement some kind of paging later -(defmethod collectibles/load-collectibles-fx ck [_ _ items-number address] +(defmethod collectibles/load-collectibles-fx ck [_ _ items-number address _] {:http-get {:url (str "https://api.cryptokitties.co/kitties?offset=0&limit=" items-number "&owner_wallet_address=" diff --git a/src/status_im/ui/screens/wallet/collectibles/cryptostrikers/events.cljs b/src/status_im/ui/screens/wallet/collectibles/cryptostrikers/events.cljs index 90f910544b..049f246c13 100644 --- a/src/status_im/ui/screens/wallet/collectibles/cryptostrikers/events.cljs +++ b/src/status_im/ui/screens/wallet/collectibles/cryptostrikers/events.cljs @@ -4,7 +4,7 @@ (def strikers :STRK) -(defmethod collectibles/load-collectible-fx strikers [_ id] +(defmethod collectibles/load-collectible-fx strikers [_ _ id] {:http-get {:url (str "https://us-central1-cryptostrikers-prod.cloudfunctions.net/cards/" id) :success-event-creator (fn [o] [:load-collectible-success strikers {id (http/parse-payload o)}]) diff --git a/src/status_im/ui/screens/wallet/collectibles/etheremon/events.cljs b/src/status_im/ui/screens/wallet/collectibles/etheremon/events.cljs index 396bd56ba9..6d12758850 100644 --- a/src/status_im/ui/screens/wallet/collectibles/etheremon/events.cljs +++ b/src/status_im/ui/screens/wallet/collectibles/etheremon/events.cljs @@ -4,7 +4,7 @@ (def emona :EMONA) -(defmethod collectibles/load-collectible-fx emona [_ id] +(defmethod collectibles/load-collectible-fx emona [_ _ id] {:http-get {:url (str "https://www.etheremon.com/api/monster/get_data?monster_ids=" id) :success-event-creator (fn [o] [:load-collectible-success emona (:data (http/parse-payload o))]) diff --git a/src/status_im/ui/screens/wallet/collectibles/events.cljs b/src/status_im/ui/screens/wallet/collectibles/events.cljs index cc63c027d2..912b1b8ec2 100644 --- a/src/status_im/ui/screens/wallet/collectibles/events.cljs +++ b/src/status_im/ui/screens/wallet/collectibles/events.cljs @@ -4,43 +4,47 @@ [status-im.utils.ethereum.erc721 :as erc721] [status-im.utils.ethereum.tokens :as tokens] [status-im.utils.money :as money] - [status-im.browser.core :as browser])) + [status-im.browser.core :as browser] + [status-im.utils.ethereum.core :as ethereum] + [status-im.constants :as constants])) -(defmulti load-collectible-fx (fn [symbol _] symbol)) +(defmulti load-collectible-fx (fn [_ symbol _] symbol)) -(defmethod load-collectible-fx :default [_ _] nil) +(defmethod load-collectible-fx :default [_ _ _] nil) (defmulti load-collectibles-fx (fn [_ symbol _ _] symbol)) -(defmethod load-collectibles-fx :default [web3 symbol items-number address] - {:load-collectibles-fx [web3 symbol items-number address]}) +(defmethod load-collectibles-fx :default [web3 symbol items-number address chain-id] + {:load-collectibles-fx [web3 symbol items-number address chain-id]}) (handlers/register-handler-fx :show-collectibles-list (fn [{:keys [db]} [_ address {:keys [symbol amount] :as collectible}]] - (let [items-number (money/to-number amount) + (let [chain-id (get-in constants/default-networks [(:network db) :config :NetworkId]) + items-number (money/to-number amount) loaded-items-number (count (get-in db [:collectibles symbol]))] (merge (when (not= items-number loaded-items-number) - (load-collectibles-fx (:web3 db) symbol items-number address)) + (load-collectibles-fx (:web3 db) symbol items-number address chain-id)) {:dispatch [:navigate-to :collectibles-list collectible]})))) (defn load-token [web3 i items-number contract address symbol] (when (< i items-number) (erc721/token-of-owner-by-index web3 contract address i - (fn [_ v2] + (fn [v1 v2] (load-token web3 (inc i) items-number contract address symbol) (re-frame/dispatch [:load-collectible symbol (.toNumber v2)]))))) (re-frame/reg-fx :load-collectibles-fx - (fn [[web3 symbol items-number address]] - (let [contract (:address (tokens/symbol->token :mainnet symbol))] + (fn [[web3 symbol items-number address chain-id]] + (let [chain (ethereum/chain-id->chain-keyword chain-id) + contract (:address (tokens/symbol->token chain symbol))] (load-token web3 0 items-number contract address symbol)))) (handlers/register-handler-fx :load-collectible - (fn [_ [_ symbol token-id]] - (load-collectible-fx symbol token-id))) + (fn [cofx [_ symbol token-id]] + (load-collectible-fx cofx symbol token-id))) (handlers/register-handler-fx :store-collectibles diff --git a/src/status_im/ui/screens/wallet/collectibles/kudos/events.cljs b/src/status_im/ui/screens/wallet/collectibles/kudos/events.cljs new file mode 100644 index 0000000000..52955c5181 --- /dev/null +++ b/src/status_im/ui/screens/wallet/collectibles/kudos/events.cljs @@ -0,0 +1,36 @@ +(ns status-im.ui.screens.wallet.collectibles.kudos.events + (:require [status-im.ui.screens.wallet.collectibles.events :as collectibles] + [status-im.utils.http :as http] + [status-im.utils.ethereum.erc721 :as erc721] + [status-im.utils.ethereum.tokens :as tokens] + [re-frame.core :as re-frame] + [status-im.utils.handlers :as handlers] + [status-im.constants :as constants] + [status-im.utils.ethereum.core :as ethereum])) + +(def kudos :KUDOS) + +(defmethod collectibles/load-collectible-fx kudos [{db :db} symbol id] + (let [chain-id (get-in constants/default-networks [(:network db) :config :NetworkId])] + {:erc721-token-uri [(:web3 db) symbol id chain-id]})) + +(re-frame/reg-fx + :erc721-token-uri + (fn [[web3 symbol tokenId chain-id]] + (let [chain (ethereum/chain-id->chain-keyword chain-id) + contract (:address (tokens/symbol->token chain symbol))] + (erc721/token-uri web3 contract tokenId + #(re-frame/dispatch [:token-uri-success + tokenId + (when %2 + ;;TODO extra chars in rinkeby + (subs %2 (.indexOf %2 "http")))]))))) + +(handlers/register-handler-fx + :token-uri-success + (fn [_ [_ tokenId token-uri]] + {:http-get {:url token-uri + :success-event-creator (fn [o] + [:load-collectible-success kudos {tokenId (http/parse-payload o)}]) + :failure-event-creator (fn [o] + [:load-collectible-failure kudos {tokenId (http/parse-payload o)}])}})) diff --git a/src/status_im/ui/screens/wallet/collectibles/kudos/views.cljs b/src/status_im/ui/screens/wallet/collectibles/kudos/views.cljs new file mode 100644 index 0000000000..6160cfba5a --- /dev/null +++ b/src/status_im/ui/screens/wallet/collectibles/kudos/views.cljs @@ -0,0 +1,27 @@ +(ns status-im.ui.screens.wallet.collectibles.kudos.views + (:require [status-im.ui.screens.wallet.collectibles.views :as collectibles] + [status-im.ui.components.react :as react] + [status-im.ui.screens.wallet.collectibles.styles :as styles] + [status-im.ui.components.svgimage :as svgimage] + [status-im.ui.components.action-button.action-button :as action-button] + [status-im.ui.components.colors :as colors] + [re-frame.core :as re-frame] + [status-im.i18n :as i18n])) + +(defmethod collectibles/render-collectible :KUDOS [_ {:keys [external_url description name image]}] + [react/view {:style styles/details} + [react/view {:style styles/details-text} + [svgimage/svgimage {:style styles/details-image + :source {:uri image + :k 1.4}}] + [react/view {:flex 1 :justify-content :center} + [react/text {:style styles/details-name} + name] + [react/text + description]]] + [action-button/action-button + {:label (i18n/label :t/view-gitcoin) + :icon :icons/address + :icon-opts {:color colors/blue} + :accessibility-label :open-collectible-button + :on-press #(re-frame/dispatch [:open-collectible-in-browser external_url])}]]) \ No newline at end of file diff --git a/src/status_im/ui/screens/wallet/collectibles/superrare/events.cljs b/src/status_im/ui/screens/wallet/collectibles/superrare/events.cljs index 90499fb4d1..ff1dcdef92 100644 --- a/src/status_im/ui/screens/wallet/collectibles/superrare/events.cljs +++ b/src/status_im/ui/screens/wallet/collectibles/superrare/events.cljs @@ -6,7 +6,7 @@ (def superrare :SUPR) -(defmethod collectibles/load-collectible-fx superrare [_ ids] +(defmethod collectibles/load-collectible-fx superrare [_ _ ids] {:http-get-n (mapv (fn [id] {:url id :success-event-creator (fn [o] @@ -29,7 +29,7 @@ imageUri }}}}")) -(defmethod collectibles/load-collectibles-fx superrare [_ _ _ address] +(defmethod collectibles/load-collectibles-fx superrare [_ _ _ address _] {:http-post {:url graphql-url :data (types/clj->json {:query (graphql-query (ethereum/naked-address address))}) :opts {:headers {"Content-Type" "application/json"}} diff --git a/src/status_im/ui/screens/wallet/main/views.cljs b/src/status_im/ui/screens/wallet/main/views.cljs index 79c897146a..11777b8e98 100644 --- a/src/status_im/ui/screens/wallet/main/views.cljs +++ b/src/status_im/ui/screens/wallet/main/views.cljs @@ -17,6 +17,7 @@ status-im.ui.screens.wallet.collectibles.cryptostrikers.views status-im.ui.screens.wallet.collectibles.cryptokitties.views status-im.ui.screens.wallet.collectibles.superrare.views + status-im.ui.screens.wallet.collectibles.kudos.views [status-im.ui.components.status-bar.view :as status-bar.view] [status-im.ui.screens.wallet.transactions.views :as transactions.views] [status-im.ui.components.colors :as colors])) diff --git a/src/status_im/utils/ethereum/core.cljs b/src/status_im/utils/ethereum/core.cljs index b739d1661a..b51b319571 100644 --- a/src/status_im/utils/ethereum/core.cljs +++ b/src/status_im/utils/ethereum/core.cljs @@ -60,7 +60,15 @@ (defn hex->string [s] (when s - (.toAscii dependencies/Web3.prototype s))) + (let [hex (.toString s)] + (loop [res "" i (if (string/starts-with? hex hex-prefix) 2 0)] + (if (and (< i (.-length hex))) + (recur + (if (= (.substr hex i 2) "00") + res + (str res (.fromCharCode js/String (js/parseInt (.substr hex i 2) 16)))) + (+ i 2)) + res))))) (defn hex->boolean [s] (= s "0x0")) diff --git a/src/status_im/utils/ethereum/erc721.cljs b/src/status_im/utils/ethereum/erc721.cljs index bd8a1ef1e8..54974f3287 100644 --- a/src/status_im/utils/ethereum/erc721.cljs +++ b/src/status_im/utils/ethereum/erc721.cljs @@ -12,3 +12,12 @@ (ethereum/normalized-address address) (ethereum/int->hex index)) #(cb %1 (ethereum/hex->bignumber %2)))) + +(defn token-uri [web3 contract tokenId cb] + (ethereum/call web3 + (ethereum/call-params + contract + "tokenURI(uint256)" + (ethereum/int->hex tokenId)) + (fn [v1 v2] + (cb v1 (ethereum/hex->string v2))))) diff --git a/src/status_im/utils/ethereum/tokens.cljs b/src/status_im/utils/ethereum/tokens.cljs index 1580d79213..59d0168c22 100644 --- a/src/status_im/utils/ethereum/tokens.cljs +++ b/src/status_im/utils/ethereum/tokens.cljs @@ -422,7 +422,11 @@ {:symbol :SUPR :nft? true :name "SuperRare" - :address "0x41a322b28d0ff354040e2cbc676f0320d8c8850d"}]) + :address "0x41a322b28d0ff354040e2cbc676f0320d8c8850d"} + {:symbol :KUDOS + :nft? true + :name "KudosToken" + :address "0x56c72cda0b04fc39a25d0b6a64fa258fad46d664"}]) :testnet (resolve-icons :testnet [{:name "Status Test Token" @@ -456,7 +460,11 @@ [{:name "Moksha Coin" :symbol :MOKSHA :decimals 18 - :address "0x6ba7dc8dd10880ab83041e60c4ede52bb607864b"}]) + :address "0x6ba7dc8dd10880ab83041e60c4ede52bb607864b"} + {:symbol :KUDOS + :nft? true + :name "KudosToken" + :address "0x93bB0AFbd0627Bbd3a6C72Bc318341D3A22e254a"}]) :custom []}) diff --git a/translations/en.json b/translations/en.json index 5bad510429..e71e10436c 100644 --- a/translations/en.json +++ b/translations/en.json @@ -487,6 +487,7 @@ "currency-display-name-isk": "Iceland Krona", "connect-wnode-content": "Connect to {{name}}?", "view-cryptostrikers": "View in CryptoStrikers", + "view-gitcoin": "View in Gitcoin", "view-superrare": "View in SuperRare", "add-network": "Add network", "unknown-status-go-error": "Unknown status-go error",