Files
integreat/src/cljs/auto_ap/status.cljs
2020-08-03 12:11:56 -07:00

95 lines
2.1 KiB
Clojure

(ns auto-ap.status
(:require [re-frame.core :as re-frame]))
;; (re-frame/reg-sub
;; ::status
;; (fn [db [_ which]]
;; (get-in db [::status which])))
;;
;;
;; (defn loading [db which]
;; (-> db
;; (assoc-in [::status which :state] :loading)
;; (assoc-in [::status which :error] nil)))
;;
;; (defn completion [db which]
;; (-> db
;; (assoc-in [::status which :state] :loading)
;; (assoc-in [::status which :error] nil)))
;;
;; (defn triggers-loading [which]
;; (re-frame/enrich
;; (fn [db event]
;; (loading db which))))
;;
;; (defn triggers-completion [which]
;; (re-frame/enrich
;; (fn [db event]
;; (completion db which))))
;;
(defn class-for [which]
(cond (= :loading (:state which))
["is-loading"]
(= :error (:state which))
["animated" "shake"]
:else
[]))
(re-frame/reg-sub
::multi
(fn [db [_ multi]]
(get-in db [::status multi])))
(re-frame/reg-sub
::single
(fn [db [_ single]]
(get-in db [::status single])))
(re-frame/reg-event-db
::loading-multi
[(re-frame/path [::status]) ]
(fn [db [_ multi which]]
(assoc-in db [multi which] {:state :loading
:error nil})))
(re-frame/reg-event-db
::completed-multi
[(re-frame/path [::status]) ]
(fn [db [_ multi which]]
(assoc-in db [multi which] {:state nil
:error nil})))
(re-frame/reg-event-db
::error-multi
[(re-frame/path [::status]) ]
(fn [db [_ multi which error]]
(assoc-in db [multi which] {:state :error
:error error})))
(defn reset-multi [db multi]
(assoc-in db [::status multi] {}))
(re-frame/reg-event-db
::loading
[(re-frame/path [::status]) ]
(fn [db [_ single]]
(assoc db single {:state :loading
:error nil})))
(re-frame/reg-event-db
::completed
[(re-frame/path [::status]) ]
(fn [db [_ single which]]
(assoc db single {:state nil
:error nil})))
(re-frame/reg-event-db
::error
[(re-frame/path [::status]) ]
(fn [db [_ single error]]
(assoc db single {:state :error
:error error})))