From 5bf3e9a06ea795a23ca4bd143d66804dfe25a10f Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 27 Sep 2016 09:28:14 +0300 Subject: [PATCH] Improve state usage of colors page and its events. --- src/uxbox/main/data/colors.cljs | 37 +++++++++++++------------ src/uxbox/main/ui/dashboard/colors.cljs | 6 ++-- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/uxbox/main/data/colors.cljs b/src/uxbox/main/data/colors.cljs index 66bade7df..92aa670b4 100644 --- a/src/uxbox/main/data/colors.cljs +++ b/src/uxbox/main/data/colors.cljs @@ -21,13 +21,13 @@ [state coll] (let [id (:id coll) coll (assoc coll :type :own)] - (assoc-in state [:colors-by-id id] coll))) + (assoc-in state [:color-colls-by-id id] coll))) (defn- dissoc-collection "A reduce function for dissoc the color collection to the state map." [state id] - (update state :colors-by-id dissoc id)) + (update state :color-colls-by-id dissoc id)) ;; --- Initialize @@ -39,18 +39,19 @@ (-apply-update [_ state] (let [type (or type :builtin) id (or id (if (= type :builtin) 1 nil)) - data {:type type :id id :selected #{} - :section :dashboard/colors}] - (assoc state :dashboard data))) + data {:type type :id id :selected #{}}] + (-> state + (assoc-in [:dashboard :colors] data) + (assoc-in [:dashboard :section] :dashboard/colors)))) ;; rs/EffectEvent ;; (-apply-effect [_ state] - ;; (when (nil? (:colors-by-id state)) + ;; (when (nil? (:color-colls-by-id state)) ;; (reset! st/loader true))) rs/WatchEvent (-apply-watch [_ state s] - (if (nil? (:colors-by-id state)) + (if (nil? (:color-colls-by-id state)) (rx/merge (rx/of (fetch-collections)) (->> (rx/filter collections-fetched? s) @@ -114,8 +115,8 @@ (-apply-update [_ state] (-> state (assoc-collection item) - (assoc-in [:dashboard :collection-id] (:id item)) - (assoc-in [:dashboard :collection-type] :own)))) + (assoc-in [:dashboard :colors :id] (:id item)) + (assoc-in [:dashboard :colors :type] :own)))) (defn collection-created [item] @@ -152,7 +153,7 @@ (defrecord UpdateCollection [id] rs/WatchEvent (-apply-watch [_ state s] - (let [item (get-in state [:colors-by-id id])] + (let [item (get-in state [:color-colls-by-id id])] (->> (rp/req :update/color-collection item) (rx/map :payload) (rx/map collection-updated))))) @@ -166,7 +167,7 @@ (defrecord RenameCollection [id name] rs/UpdateEvent (-apply-update [_ state] - (assoc-in state [:colors-by-id id :name] name)) + (assoc-in state [:color-colls-by-id id :name] name)) rs/WatchEvent (-apply-watch [_ state s] @@ -198,7 +199,7 @@ rs/UpdateEvent (-apply-update [_ state] (let [replacer #(-> (disj % from) (conj to))] - (update-in state [:colors-by-id id :data] (fnil replacer #{})))) + (update-in state [:color-colls-by-id id :data] (fnil replacer #{})))) rs/WatchEvent (-apply-watch [_ state s] @@ -214,7 +215,7 @@ (defrecord RemoveColors [id colors] rs/UpdateEvent (-apply-update [_ state] - (update-in state [:colors-by-id id :data] + (update-in state [:color-colls-by-id id :data] #(set/difference % colors))) rs/WatchEvent @@ -231,17 +232,17 @@ (defrecord SelectColor [color] rs/UpdateEvent (-apply-update [_ state] - (update-in state [:dashboard :selected] conj color))) + (update-in state [:dashboard :colors :selected] conj color))) (defrecord DeselectColor [color] rs/UpdateEvent (-apply-update [_ state] - (update-in state [:dashboard :selected] disj color))) + (update-in state [:dashboard :colors :selected] disj color))) (defrecord ToggleColorSelection [color] rs/WatchEvent (-apply-watch [_ state stream] - (let [selected (get-in state [:dashboard :selected])] + (let [selected (get-in state [:dashboard :colors :selected])] (rx/of (if (selected color) (DeselectColor. color) @@ -257,9 +258,9 @@ (defrecord DeleteSelectedColors [] rs/WatchEvent (-apply-watch [_ state stream] - (let [{:keys [id selected]} (get state :dashboard)] + (let [{:keys [id selected]} (get-in state [:dashboard :colors])] (rx/of (remove-colors id selected) - #(assoc-in % [:dashboard :selected] #{}))))) + #(assoc-in % [:dashboard :colors :selected] #{}))))) (defn delete-selected-colors [] diff --git a/src/uxbox/main/ui/dashboard/colors.cljs b/src/uxbox/main/ui/dashboard/colors.cljs index 9a7a5ec65..0e081a923 100644 --- a/src/uxbox/main/ui/dashboard/colors.cljs +++ b/src/uxbox/main/ui/dashboard/colors.cljs @@ -23,18 +23,18 @@ [uxbox.util.dom :as dom] [uxbox.util.i18n :as t :refer (tr)] [uxbox.util.lens :as ul] - [uxbox.util.mixins :as mx] + [uxbox.util.mixins :as mx :include-macros true] [uxbox.util.rstore :as rs] [uxbox.util.schema :as sc])) ;; --- Refs (def ^:private dashboard-ref - (-> (l/key :dashboard) + (-> (l/in [:dashboard :colors]) (l/derive st/state))) (def ^:private collections-map-ref - (-> (comp (l/key :colors-by-id) + (-> (comp (l/key :color-colls-by-id) (ul/merge library/+color-collections-by-id+)) (l/derive st/state)))