From 0ce0cf0c04b53ee6c7038d8912dd1ed433f7935f Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Tue, 20 Oct 2015 17:17:18 -0500 Subject: Allow rejecting subscriptions from the channel --- lib/assets/javascripts/cable/subscriptions.coffee | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'lib/assets/javascripts/cable/subscriptions.coffee') diff --git a/lib/assets/javascripts/cable/subscriptions.coffee b/lib/assets/javascripts/cable/subscriptions.coffee index 4efb384ee2..497fcb074e 100644 --- a/lib/assets/javascripts/cable/subscriptions.coffee +++ b/lib/assets/javascripts/cable/subscriptions.coffee @@ -27,11 +27,22 @@ class Cable.Subscriptions for subscription in @subscriptions @sendCommand(subscription, "subscribe") + rejectSubscription: (identifier) -> + subscriptions = @findAll(identifier) + + for subscription in subscriptions + @removeSubscription(subscription) + @notify(subscription, "rejected") + remove: (subscription) -> - @subscriptions = (s for s in @subscriptions when s isnt subscription) + @removeSubscription(subscription) + unless @findAll(subscription.identifier).length @sendCommand(subscription, "unsubscribe") + removeSubscription: (subscription) -> + @subscriptions = (s for s in @subscriptions when s isnt subscription) + findAll: (identifier) -> s for s in @subscriptions when s.identifier is identifier @@ -48,7 +59,7 @@ class Cable.Subscriptions for subscription in subscriptions subscription[callbackName]?(args...) - if callbackName in ["initialized", "connected", "disconnected"] + if callbackName in ["initialized", "connected", "disconnected", "rejected"] {identifier} = subscription @record(notification: {identifier, callbackName, args}) -- cgit v1.2.3