From ff15c42f9a936c5e241010d2a11c716279ab1f0f Mon Sep 17 00:00:00 2001 From: gered Date: Mon, 23 May 2016 12:18:28 -0400 Subject: [PATCH] better way of picking which namespace to use in subscribe/unsubscribe if the view sig specified includes a namespace (even a nil one), then use it for the subscription. otherwise, call namespace-fn to get one to use in the subscription. --- src/views/core.clj | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/views/core.clj b/src/views/core.clj index eb4de87..e4cde74 100644 --- a/src/views/core.clj +++ b/src/views/core.clj @@ -44,10 +44,13 @@ (boolean (:logger @statistics))) (defn ->view-sig - [namespace view-id parameters] - {:namespace namespace - :view-id view-id - :parameters parameters}) + ([namespace view-id parameters] + {:namespace namespace + :view-id view-id + :parameters parameters}) + ([view-id parameters] + {:view-id view-id + :parameters parameters})) (defn- send-view-data! [subscriber-key {:keys [namespace view-id parameters] :as view-sig} data] @@ -94,7 +97,9 @@ data for the view." [{:keys [namespace view-id parameters] :as view-sig} subscriber-key context] (if-let [view (get-in @view-system [:views view-id])] - (let [namespace (get-namespace view-sig subscriber-key context) + (let [namespace (if (contains? view-sig :namespace) + namespace + (get-namespace view-sig subscriber-key context)) view-sig (->view-sig namespace view-id parameters)] (if (authorized-subscription? view-sig subscriber-key context) (do @@ -160,7 +165,9 @@ (trace "unsubscribing from view" view-sig subscriber-key) (swap! view-system (fn [vs] - (let [namespace (get-namespace view-sig subscriber-key context) + (let [namespace (if (contains? view-sig :namespace) + namespace + (get-namespace view-sig subscriber-key context)) view-sig (->view-sig namespace view-id parameters)] (-> vs (remove-from-subscribed view-sig subscriber-key)