Skip to content

Instantly share code, notes, and snippets.

@ddellacosta
Last active August 29, 2015 14:20
Show Gist options
  • Save ddellacosta/5cb1ea73fbe67dce1acf to your computer and use it in GitHub Desktop.
Save ddellacosta/5cb1ea73fbe67dce1acf to your computer and use it in GitHub Desktop.
No idea if this actually works, but should be something like this
(ns some-namespace
(:require
[om.core :as om]
[om.dom :as dom]))
(defn time-widget
[{:keys [msg-time] :as msg} owner]
(reify
om/IRenderState
(render-state [_ _]
(dom/time #js {:dateTime (.fromNow (js/moment msg-time))}))))
(defn messages ; or whatever your parent component is
[msgs owner]
(reify
om/IWillMount
(will-mount [_]
(.setInterval js/window
#(om/set-state! owner :update (.format (js/moment))) ; just in here as a dummy value that changes
, 1000))
om/IRenderState
(render-state [_ {:keys [update]}]
(om/build-all msgs time-widget {:state {:update update}}))))
@ddellacosta
Copy link
Author

;; Alternatively

(ns some-namespace
  (:require
    [om.core :as om]
    [om.dom :as dom]))

(defn messages ; or whatever your parent component is
  [msgs owner]
  (reify
    om/IWillMount
    (will-mount [_]
      (.setInterval js/window
        #(om/set-state! owner :update (.format (js/moment))) ; just in here as a dummy value that changes
        , 1000))
    om/IRenderState
    (render-state [_ {:keys [update]}]
      (for [m msgs]
        (dom/time #js {:dateTime (.fromNow (js/moment (:msg-time m)))})))))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment