mirror of
https://github.com/status-im/status-mobile.git
synced 2025-02-05 13:25:43 +00:00
19 lines
712 B
Clojure
19 lines
712 B
Clojure
(ns status-im.utils.handlers)
|
|
|
|
(defmacro handlers->
|
|
"Help thread multiple handler functions.
|
|
All functions are expected to accept [db event] as parameters.
|
|
If one handler returns a modified db it will be used as parameters for subsequent handlers."
|
|
[& forms]
|
|
(let [db (gensym "db")
|
|
event (gensym "event")
|
|
new-db (gensym "new-db")]
|
|
`(fn [~db ~event]
|
|
(let [~@(interleave (repeat db)
|
|
(map (fn [form]
|
|
`(let [~new-db (~form ~db ~event)]
|
|
(if (map? ~new-db)
|
|
~new-db
|
|
~db))) forms))]
|
|
~db))))
|