pass in context to views subscribe/unsubscribe calls

This commit is contained in:
Gered 2016-05-20 12:21:30 -04:00
parent 833054913e
commit 2c29f7fe71
2 changed files with 13 additions and 15 deletions

View file

@ -20,12 +20,12 @@
{:on-receive
(fn [handler]
(fn [client-id request data]
(if-not (server/on-receive! client-id data)
(if-not (server/on-receive! client-id data {:request request})
; only pass along receive events for data not intended for the views system
(handler client-id request data))))
:on-close
(fn [handler]
(fn [client-id request reason]
(server/on-close! client-id)
(server/on-close! client-id {:request request})
(handler client-id request reason)))})

View file

@ -5,31 +5,29 @@
[reagent-data-views.utils :refer [relevant-event?]]))
(defn on-close!
[client-id]
[client-id context]
(log/trace client-id "on-close, unsubscribing from all views")
(views/unsubscribe-all! client-id))
(defn handle-subscriptions!
[client-id view-sig]
[client-id view-sig context]
(log/trace client-id "subscribing to" view-sig)
(let [{:keys [view-id parameters]} view-sig]
; TODO: namespace
(views/subscribe! nil view-id parameters client-id)))
(views/subscribe! view-sig client-id context))
(defn handle-unsubscriptions!
[client-id view-sig]
[client-id view-sig context]
(log/trace client-id "unsubscribing from" view-sig)
(let [{:keys [view-id parameters]} view-sig]
; TODO: namespace
(views/unsubscribe! nil view-id parameters client-id)))
(views/unsubscribe! view-sig client-id context))
(defn on-receive!
[client-id data]
[client-id data context]
(when (relevant-event? data)
(let [[event view-sig] data]
(let [[event view-sig] data
; for safety, since this is otherwise coming in un-altered from clients
view-sig (dissoc view-sig :namespace)]
(condp = event
:views/subscribe (handle-subscriptions! client-id view-sig)
:views/unsubscribe (handle-unsubscriptions! client-id view-sig)
:views/subscribe (handle-subscriptions! client-id view-sig context)
:views/unsubscribe (handle-unsubscriptions! client-id view-sig context)
(log/warn client-id "unrecognized event" event "-- full received data:" data))
; indicating that we handled the received event
true)))