(ns horizon.common.utils.effects.core (:require [cljs.core.async :as core.async] [horizon.common.logging :as log] [om.core :as om])) (defprotocol Effect (process! [this])) (defrecord PropagationUp [channel messages] Effect (process! [this] (doseq [msg messages] (core.async/put! channel msg)))) (defrecord LoggingUnknownMessageType [where msg] Effect (process! [this] (log/log-unknown-message-type where msg))) (defrecord SettingOmState [owner kw value] Effect (process! [this] (om/set-state! owner kw value)))