Merge remote-tracking branch 'origin/staging' into develop

This commit is contained in:
Alejandro Alonso 2022-10-05 09:34:18 +02:00
commit da33d539bf
4 changed files with 46 additions and 18 deletions

View file

@ -19,24 +19,29 @@
;; The main broadcast channel instance, used for emit data
(defonce default-channel
(js/BroadcastChannel. default-topic))
(when (exists? js/BroadcastChannel)
(js/BroadcastChannel. default-topic)))
(defonce stream
(->> (rx/create (fn [subs]
(let [chan (js/BroadcastChannel. default-topic)]
(unchecked-set chan "onmessage" #(rx/push! subs (unchecked-get % "data")))
(fn [] (.close ^js chan)))))
(rx/map t/decode-str)
(rx/map map->BroadcastMessage)
(rx/share)))
(if (exists? js/BroadcastChannel)
(->> (rx/create (fn [subs]
(let [chan (js/BroadcastChannel. default-topic)]
(unchecked-set chan "onmessage" #(rx/push! subs (unchecked-get % "data")))
(fn [] (.close ^js chan)))))
(rx/map t/decode-str)
(rx/map map->BroadcastMessage)
(rx/share))
(rx/subject)))
(defn emit!
([type data]
(.postMessage ^js default-channel (t/encode-str {:id nil :type type :data data}))
nil)
(when default-channel
(.postMessage ^js default-channel (t/encode-str {:id nil :type type :data data}))
nil))
([id type data]
(.postMessage ^js default-channel (t/encode-str {:id id :type type :data data}))
nil))
(when default-channel
(.postMessage ^js default-channel (t/encode-str {:id id :type type :data data}))
nil)))
(defn type?
([type]