From 3353c69a510978a162554bab56b2e8391319d200 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 15 Mar 2016 21:15:56 +0200 Subject: [PATCH] Optimize the projects/pages loading. --- src/uxbox/data/projects.cljs | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/uxbox/data/projects.cljs b/src/uxbox/data/projects.cljs index bacb03dc7e..e75b29885b 100644 --- a/src/uxbox/data/projects.cljs +++ b/src/uxbox/data/projects.cljs @@ -71,27 +71,34 @@ (defn load-projects [] (letfn [(transform [state projects] - (reduce stpr/assoc-project state projects)) + (as-> state $ + (reduce stpr/assoc-project $ projects) + (assoc $ ::projects-loaded true))) (on-loaded [projects] #(transform % projects))] (reify rs/WatchEvent (-apply-watch [_ state] - (-> (rp/do :fetch/projects) - (p/then on-loaded)))))) + (if (::projects-loaded state) + (rx/empty) + (-> (rp/do :fetch/projects) + (p/then on-loaded))))))) (defn load-pages [] (letfn [(transform [state pages] - (reduce stpr/assoc-page state pages)) + (as-> state $ + (reduce stpr/assoc-page $ pages) + (assoc $ ::pages-loaded true))) (on-loaded [pages] #(transform % pages))] (reify rs/WatchEvent (-apply-watch [_ state] - (println "load-pages") - (-> (rp/do :fetch/pages) - (p/then on-loaded)))))) + (if (::pages-loaded state) + (rx/empty) + (-> (rp/do :fetch/pages) + (p/then on-loaded))))))) (defn create-page [{:keys [name width height project layout] :as data}]