re-frame/src/re_frame/subs.cljs

26 lines
732 B
Plaintext
Raw Normal View History

2014-12-15 11:56:32 +00:00
(ns re-frame.subs
(:require
[re-frame.db :refer [app-db]]
[re-frame.utils :refer [first-in-vector]]))
;; mappings from handler-id to handler-fn
(def ^:private key->fn (atom {}))
(defn register
"register a function for a handler id"
[key-v handler-fn]
(if (contains? @key->fn key-v)
(println "Warning: overwritting a subscription-handler: " key-v)) ;; TODO: more generic logging
(swap! key->fn assoc key-v handler-fn))
(defn subscribe
"returns a reagent/reaction which observes a part of the "
[v]
(let [key-v (first-in-vector v)
handler-fn (get @key->fn key-v)]
(assert (not (nil? handler-fn)) (str "No subscription handler registered for key: " key-v))
(handler-fn app-db v)))