From 063ed16c47e74e530834f43465c2c9ca28ee6c00 Mon Sep 17 00:00:00 2001 From: Dmitry Novotochinov Date: Wed, 25 Jul 2018 12:11:07 +0200 Subject: [PATCH] Allow only one wallet transactions sync loop Signed-off-by: Dmitry Novotochinov --- src/status_im/ui/screens/events.cljs | 2 +- src/status_im/ui/screens/wallet/send/events.cljs | 13 ++++++++++--- src/status_im/wallet/transactions.cljs | 3 +++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/status_im/ui/screens/events.cljs b/src/status_im/ui/screens/events.cljs index 81cbbf7c23..f95e1bfaa9 100644 --- a/src/status_im/ui/screens/events.cljs +++ b/src/status_im/ui/screens/events.cljs @@ -332,7 +332,7 @@ [:update-wallet] [:update-transactions] (when platform/mobile? [:get-fcm-token]) - [:sync-wallet-transactions] + [:start-wallet-transactions-sync] [:update-sign-in-time]] (seq events-after) (into events-after))})) diff --git a/src/status_im/ui/screens/wallet/send/events.cljs b/src/status_im/ui/screens/wallet/send/events.cljs index d03246b3f2..d5dc7e2a74 100644 --- a/src/status_im/ui/screens/wallet/send/events.cljs +++ b/src/status_im/ui/screens/wallet/send/events.cljs @@ -477,6 +477,13 @@ (handlers/register-handler-fx :sync-wallet-transactions (fn [cofx _] - (handlers-macro/merge-fx cofx - (wallet.transactions/load-missing-chat-transactions) - (wallet.transactions/sync)))) + (wallet.transactions/sync cofx))) + +(handlers/register-handler-fx + :start-wallet-transactions-sync + (fn [cofx _] + (when-not (get-in cofx [:db :wallet :transactions-sync-started?]) + (handlers-macro/merge-fx cofx + (wallet.transactions/load-missing-chat-transactions) + (wallet.transactions/sync) + (wallet.transactions/set-sync-started))))) diff --git a/src/status_im/wallet/transactions.cljs b/src/status_im/wallet/transactions.cljs index 927a8cdb71..0ba7a12c97 100644 --- a/src/status_im/wallet/transactions.cljs +++ b/src/status_im/wallet/transactions.cljs @@ -88,6 +88,9 @@ (< sync-interval-ms (- (time/timestamp) last-updated-at))))) +(defn set-sync-started [{:keys [db]}] + {:db (assoc-in db [:wallet :transactions-sync-started?] true)}) + ; Fetch updated data for any unconfirmed transactions or incoming chat transactions missing in wallet ; and schedule new recurring sync request (defn sync [{:keys [db] :as cofx}]