From d2ff665d6e9a4ce489085244e52cf68a4f1b1eb4 Mon Sep 17 00:00:00 2001 From: Andrey Shovkoplyas Date: Wed, 9 Oct 2019 12:13:27 +0200 Subject: [PATCH] [#9107] Collectibles (except CryptoKitties) are not loaded (endless spinner) after relogin Signed-off-by: Andrey Shovkoplyas --- .../ui/screens/wallet/account/views.cljs | 20 +++++++- .../ui/screens/wallet/accounts/views.cljs | 51 ++++--------------- src/status_im/wallet/collectibles/core.cljs | 21 ++++---- 3 files changed, 37 insertions(+), 55 deletions(-) diff --git a/src/status_im/ui/screens/wallet/account/views.cljs b/src/status_im/ui/screens/wallet/account/views.cljs index cccadaa9821..077c449c8cd 100644 --- a/src/status_im/ui/screens/wallet/account/views.cljs +++ b/src/status_im/ui/screens/wallet/account/views.cljs @@ -14,7 +14,10 @@ [status-im.ui.components.icons.vector-icons :as icons] [status-im.ui.screens.wallet.account.styles :as styles] [status-im.ui.screens.wallet.transactions.views :as history] - [status-im.ethereum.core :as ethereum])) + [status-im.ethereum.core :as ethereum] + [status-im.ui.components.list-item.views :as list-item] + [status-im.utils.money :as money] + [status-im.wallet.utils :as wallet.utils])) (def state (reagent/atom {:tab :assets})) @@ -66,6 +69,19 @@ [react/view {:style styles/divider}] [button (i18n/label :t/receive) :main-icons/receive #(re-frame/dispatch [:show-popover {:view :share-account :address address}])]]])) +(defn render-collectible [address] + (fn [{:keys [name icon amount] :as collectible}] + (let [items-number (money/to-fixed amount) + details? (pos? items-number)] + [list-item/list-item + {:title (wallet.utils/display-symbol collectible) + :subtitle name + :icon [list/item-image icon] + :on-press (when details? + #(re-frame/dispatch + [:show-collectibles-list collectible address])) + :accessories [items-number :chevron]}]))) + (views/defview transactions [address] (views/letsubs [{:keys [transaction-history-sections]} [:wallet.transactions.history/screen address]] @@ -97,7 +113,7 @@ :footer [react/view {:style {:height tabs.styles/tabs-diff :align-self :stretch}}] - :render-fn accounts/render-collectible}] + :render-fn (render-collectible address)}] [react/view {:align-items :center :margin-top 32} [react/text {:style {:color colors/gray}} (i18n/label :t/no-collectibles)]]) diff --git a/src/status_im/ui/screens/wallet/accounts/views.cljs b/src/status_im/ui/screens/wallet/accounts/views.cljs index 806b7d07fd2..47734d9a4a4 100644 --- a/src/status_im/ui/screens/wallet/accounts/views.cljs +++ b/src/status_im/ui/screens/wallet/accounts/views.cljs @@ -12,10 +12,8 @@ [status-im.wallet.utils :as wallet.utils] [status-im.ui.components.tabbar.styles :as tabs.styles] [reagent.core :as reagent] - [status-im.utils.money :as money] [re-frame.core :as re-frame] [status-im.ui.screens.wallet.accounts.sheets :as sheets] - [status-im.ethereum.core :as ethereum] [status-im.ui.screens.wallet.accounts.styles :as styles])) (def state (reagent/atom {:tab :assets})) @@ -79,45 +77,16 @@ [list/item-image icon] [chat-icon/custom-icon-view-list (:name token) color])}])) -(defn render-collectible [{:keys [name icon amount] :as collectible}] - (let [items-number (money/to-fixed amount) - details? (pos? items-number)] - [list-item/list-item - {:title (wallet.utils/display-symbol collectible) - :subtitle name - :icon [list/item-image icon] - :on-press (when details? - #(re-frame/dispatch - [:show-collectibles-list collectible])) - :accessories [items-number :chevron]}])) - -(views/defview assets-and-collections [] +(views/defview assets [] (views/letsubs [{:keys [tokens nfts]} [:wallet/all-visible-assets-with-values] currency [:wallet/currency]] - (let [{:keys [tab]} @state] - [react/view {:flex 1} - [react/view {:flex-direction :row :margin-bottom 8 :margin-horizontal 4} - [tab-title state :assets (i18n/label :t/wallet-assets) (= tab :assets)] - [tab-title state :nft (i18n/label :t/wallet-collectibles) (= tab :nft)]] - (if (= tab :assets) - [list/flat-list {:data tokens - :default-separator? false - :key-fn :name - :footer [react/view - {:style {:height tabs.styles/tabs-diff - :align-self :stretch}}] - :render-fn (render-asset (:code currency))}] - (if (seq nfts) - [list/flat-list {:data nfts - :default-separator? false - :key-fn :name - :footer [react/view - {:style {:height tabs.styles/tabs-diff - :align-self :stretch}}] - :render-fn render-collectible}] - [react/view {:align-items :center :margin-top 32} - [react/text {:style {:color colors/gray}} - (i18n/label :t/no-collectibles)]]))]))) + [list/flat-list {:data tokens + :default-separator? false + :key-fn :name + :footer [react/view + {:style {:height tabs.styles/tabs-diff + :align-self :stretch}}] + :render-fn (render-asset (:code currency))}])) (views/defview total-value [] (views/letsubs [currency [:wallet/currency] @@ -149,7 +118,7 @@ [icons/icon :main-icons/more {:accessibility-label :accounts-more-options}]]]])) (views/defview accounts [] - (views/letsubs [{:keys [accounts address keycard-key-uid]} [:multiaccount]] + (views/letsubs [{:keys [accounts keycard-key-uid]} [:multiaccount]] [react/scroll-view {:horizontal true} [react/view {:flex-direction :row :padding-top 11 :padding-bottom 12} (for [account accounts] @@ -167,4 +136,4 @@ [react/view {:margin-top 8 :padding-horizontal 16} [total-value] [accounts]] - [assets-and-collections]]]) + [assets]]]) diff --git a/src/status_im/wallet/collectibles/core.cljs b/src/status_im/wallet/collectibles/core.cljs index 22c9d0e48c1..37c0d093133 100644 --- a/src/status_im/wallet/collectibles/core.cljs +++ b/src/status_im/wallet/collectibles/core.cljs @@ -17,10 +17,10 @@ (defmethod load-collectible-fx :default [_ _ _] nil) -(defmulti load-collectibles-fx (fn [_ symbol _ _] symbol)) +(defmulti load-collectibles-fx (fn [_ symbol _ _ _] symbol)) -(defmethod load-collectibles-fx :default [all-tokens symbol items-number address chain-id] - {:load-collectibles-fx [all-tokens symbol items-number address chain-id]}) +(defmethod load-collectibles-fx :default [all-tokens symbol items-number address chain] + {:load-collectibles-fx [all-tokens symbol items-number address chain]}) (defn load-token [i items-number contract address symbol] (when (< i items-number) @@ -31,20 +31,20 @@ (re-frame/reg-fx :load-collectibles-fx - (fn [[all-tokens symbol items-number address chain-id]] - (let [chain (ethereum/chain-id->chain-keyword chain-id) - contract (:address (tokens/symbol->token all-tokens chain symbol))] + (fn [[all-tokens symbol items-number address chain]] + (let [contract (:address (tokens/symbol->token all-tokens chain symbol))] (load-token 0 items-number contract address symbol)))) (handlers/register-handler-fx :show-collectibles-list - (fn [{:keys [db]} [_ {:keys [symbol amount] :as collectible}]] - (let [chain-id (get-in constants/default-networks [(:network db) :config :NetworkId]) + (fn [{:keys [db]} [_ {:keys [symbol amount] :as collectible} address]] + (let [chain (ethereum/chain-id->chain-keyword + (get-in constants/default-networks [(:networks/current-network db) :config :NetworkId])) all-tokens (:wallet/all-tokens db) 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 all-tokens symbol items-number (ethereum/default-address db) chain-id)) + (load-collectibles-fx all-tokens symbol items-number address chain)) {:dispatch [:navigate-to :collectibles-list collectible]})))) ;; Crypto Kitties @@ -168,9 +168,6 @@ (fn [o] [:load-collectible-failure kudos {tokenId (http/parse-payload o)}])}})) -;; - - (handlers/register-handler-fx :load-collectible (fn [cofx [_ symbol token-id]]