notification.cljs 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. (ns frontend.handler.notification
  2. "Provides notification related functionality"
  3. (:require [frontend.state :as state]
  4. [frontend.util :as util]))
  5. (defn clear!
  6. [uid]
  7. (let [contents (state/get-notification-contents)]
  8. (state/set-state! :notification/contents (dissoc contents uid))))
  9. (defn clear-all!
  10. []
  11. (state/set-state! :notification/contents nil))
  12. (defn show!
  13. ([content status]
  14. (show! content status true nil 1500))
  15. ([content status clear?]
  16. (show! content status clear? nil 1500))
  17. ([content status clear? uid]
  18. (show! content status clear? uid 1500))
  19. ([content status clear? uid timeout]
  20. (let [contents (state/get-notification-contents)
  21. uid (or uid (keyword (util/unique-id)))]
  22. (state/set-state! :notification/contents (assoc contents
  23. uid {:content content
  24. :status status}))
  25. (when (and clear? (not= status :error))
  26. (js/setTimeout #(clear! uid) (or timeout 1500)))
  27. uid)))