[#11502] Handle tx fetching failure

This commit is contained in:
Roman Volosovskyi 2020-12-02 13:38:28 +02:00
parent eaf463395a
commit aac7a97e13
No known key found for this signature in database
GPG Key ID: 0238A4B5ECEE70DE
6 changed files with 56 additions and 10 deletions

View File

@ -59,7 +59,9 @@
[{:keys [db]} accounts] [{:keys [db]} accounts]
(log/debug "[wallet-subs] recent-history-fetching-started" (log/debug "[wallet-subs] recent-history-fetching-started"
"accounts" accounts) "accounts" accounts)
{:db (transactions/update-fetching-status db accounts :recent? true)}) {:db (-> db
(transactions/update-fetching-status accounts :recent? true)
(assoc :wallet/recent-history-fetching-started? true))})
(fx/defn recent-history-fetching-ended (fx/defn recent-history-fetching-ended
[{:keys [db] :as cofx} {:keys [accounts blockNumber]}] [{:keys [db] :as cofx} {:keys [accounts blockNumber]}]
@ -73,7 +75,9 @@
wallet/remove-transactions-since-block blockNumber) wallet/remove-transactions-since-block blockNumber)
(transactions/update-fetching-status accounts :recent? false) (transactions/update-fetching-status accounts :recent? false)
(dissoc :wallet/waiting-for-recent-history? (dissoc :wallet/waiting-for-recent-history?
:wallet/refreshing-history?)) :wallet/refreshing-history?
:wallet/fetching-error
:wallet/recent-history-fetching-started?))
:transactions/get-transfers :transactions/get-transfers
{:chain-tokens (:wallet/all-tokens db) {:chain-tokens (:wallet/all-tokens db)
:addresses (reduce :addresses (reduce
@ -90,6 +94,13 @@
:historical? true}} :historical? true}}
(wallet.core/restart-wallet-service-default))) (wallet.core/restart-wallet-service-default)))
(fx/defn fetching-error
[{:keys [db] :as cofx} {:keys [message]}]
(fx/merge
cofx
{:db (assoc db :wallet/fetching-error message)}
(wallet.core/stop-wallet)))
(fx/defn new-wallet-event (fx/defn new-wallet-event
[cofx {:keys [type blockNumber accounts newTransactions] :as event}] [cofx {:keys [type blockNumber accounts newTransactions] :as event}]
(log/debug "[wallet-subs] new-wallet-event" (log/debug "[wallet-subs] new-wallet-event"
@ -101,4 +112,5 @@
"reorg" (reorg cofx event) "reorg" (reorg cofx event)
"recent-history-fetching" (recent-history-fetching-started cofx accounts) "recent-history-fetching" (recent-history-fetching-started cofx accounts)
"recent-history-ready" (recent-history-fetching-ended cofx event) "recent-history-ready" (recent-history-fetching-ended cofx event)
"fetching-history-error" (fetching-error cofx event)
(log/warn ::unknown-wallet-event :type type :event event))) (log/warn ::unknown-wallet-event :type type :event event)))

View File

@ -171,6 +171,7 @@
(reg-root-key-sub :wallet/favourites :wallet/favourites) (reg-root-key-sub :wallet/favourites :wallet/favourites)
(reg-root-key-sub :wallet/refreshing-history? :wallet/refreshing-history?) (reg-root-key-sub :wallet/refreshing-history? :wallet/refreshing-history?)
(reg-root-key-sub :wallet/buy-crypto-hidden :wallet/buy-crypto-hidden) (reg-root-key-sub :wallet/buy-crypto-hidden :wallet/buy-crypto-hidden)
(reg-root-key-sub :wallet/fetching-error :wallet/fetching-error)
;;commands ;;commands
(reg-root-key-sub :commands/select-account :commands/select-account) (reg-root-key-sub :commands/select-account :commands/select-account)

View File

@ -18,6 +18,7 @@
[status-im.wallet.utils :as wallet.utils] [status-im.wallet.utils :as wallet.utils]
[status-im.ui.components.tabs :as tabs] [status-im.ui.components.tabs :as tabs]
[quo.react-native :as rn] [quo.react-native :as rn]
[quo.design-system.colors :as quo-colors]
[status-im.utils.utils :as utils.utils]) [status-im.utils.utils :as utils.utils])
(:require-macros [status-im.utils.views :as views])) (:require-macros [status-im.utils.views :as views]))
@ -212,7 +213,8 @@
:onRefresh refresh-action}])) :onRefresh refresh-action}]))
(views/defview account [] (views/defview account []
(views/letsubs [{:keys [name address] :as account} [:multiaccount/current-account]] (views/letsubs [{:keys [name address] :as account} [:multiaccount/current-account]
fetching-error [:wallet/fetching-error]]
(let [anim-y (animation/create-value button-group-height) (let [anim-y (animation/create-value button-group-height)
scroll-y (animation/create-value 0)] scroll-y (animation/create-value 0)]
(anim-listener anim-y scroll-y) (anim-listener anim-y scroll-y)
@ -228,6 +230,30 @@
(and (and
@updates-counter @updates-counter
@(re-frame/subscribe [:wallet/refreshing-history?])))} @(re-frame/subscribe [:wallet/refreshing-history?])))}
(when fetching-error
[react/view {:style {:flex 1
:align-items :center
:margin 8}}
[icons/icon
:main-icons/warning
{:color :red
:container-style {:background-color (quo-colors/get-color :negative-02)
:height 40
:width 40
:border-radius 20
:align-items :center
:justify-content :center}}]
[react/view
{:style {:justify-content :center
:align-items :center
:margin-top 8
:margin-horizontal 67.5
:text-align :center}}
[quo/text
{:color :secondary
:size :small
:style {:text-align :center}}
(i18n/label :t/transfers-fetching-failure)]]])
[react/view {:padding-left 16} [react/view {:padding-left 16}
[react/scroll-view {:horizontal true} [react/scroll-view {:horizontal true}
[react/view {:flex-direction :row :padding-top 8 :padding-bottom 12} [react/view {:flex-direction :row :padding-top 8 :padding-bottom 12}

View File

@ -557,8 +557,12 @@
#(re-frame.core/dispatch [::restart]) #(re-frame.core/dispatch [::restart])
ms-20-min))] ms-20-min))]
{:db (-> db {:db (-> db
(update :wallet dissoc :fetching)
(assoc :wallet-service/state :stopped) (assoc :wallet-service/state :stopped)
(assoc :wallet-service/restart-timeout timeout)) (assoc :wallet-service/restart-timeout timeout)
(dissoc :wallet/recent-history-fetching-started?
:wallet/waiting-for-recent-history?
:wallet/refreshing-history?))
::stop-wallet nil})) ::stop-wallet nil}))
(fx/defn start-wallet (fx/defn start-wallet
@ -620,9 +624,11 @@
(fx/defn restart-on-pull (fx/defn restart-on-pull
{:events [:wallet.ui/pull-to-refresh-history]} {:events [:wallet.ui/pull-to-refresh-history]}
[{:keys [db now] :as cofx}] [{:keys [db now] :as cofx}]
(let [last-pull (get db :wallet/last-pull-time) (let [last-pull (get db :wallet/last-pull-time)
watching? (get db :wallet/watch-txs)] watching? (get db :wallet/watch-txs)
fetching-history? (get db :wallet/recent-history-fetching-started?)]
(when (and (not watching?) (when (and (not watching?)
(not fetching-history?)
(or (not last-pull) (or (not last-pull)
(> (- now last-pull) pull-to-refresh-cooldown-period))) (> (- now last-pull) pull-to-refresh-cooldown-period)))
(fx/merge (fx/merge

View File

@ -2,7 +2,7 @@
"_comment": "DO NOT EDIT THIS FILE BY HAND. USE 'scripts/update-status-go.sh <tag>' instead", "_comment": "DO NOT EDIT THIS FILE BY HAND. USE 'scripts/update-status-go.sh <tag>' instead",
"owner": "status-im", "owner": "status-im",
"repo": "status-go", "repo": "status-go",
"version": "v0.65.0", "version": "v0.66.1",
"commit-sha1": "cdca42b90f7fd5f302a5eb31802b9ae526d566d7", "commit-sha1": "bf703254ba242293c39abd9102420be9e2cc2e25",
"src-sha256": "1qpq9y099bfa6x36afbimn2p5inzrsgbb8qzigmchl513mkhp5s1" "src-sha256": "1xfrgil9nz5q2jmq86v4fhhkz0gnq02dhyq8bnavvi5j7qg1saw1"
} }

View File

@ -1349,5 +1349,6 @@
"has-permissions": "has permission to access", "has-permissions": "has permission to access",
"connect-wallet": "Connect wallet", "connect-wallet": "Connect wallet",
"open-chat": "Open chat", "open-chat": "Open chat",
"favourite-description": "Your favourite websites will appear here" "favourite-description": "Your favourite websites will appear here",
"transfers-fetching-failure": "Transfers history could not be updated. Check your connection and pull down to try again"
} }