diff options
Diffstat (limited to 'lib/assets/javascripts/cable/subscriptions.coffee')
-rw-r--r-- | lib/assets/javascripts/cable/subscriptions.coffee | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/assets/javascripts/cable/subscriptions.coffee b/lib/assets/javascripts/cable/subscriptions.coffee index 4efb384ee2..13db32eb2c 100644 --- a/lib/assets/javascripts/cable/subscriptions.coffee +++ b/lib/assets/javascripts/cable/subscriptions.coffee @@ -23,18 +23,27 @@ class Cable.Subscriptions @notify(subscription, "initialized") @sendCommand(subscription, "subscribe") - reload: -> - for subscription in @subscriptions - @sendCommand(subscription, "subscribe") - remove: (subscription) -> - @subscriptions = (s for s in @subscriptions when s isnt subscription) + @forget(subscription) + unless @findAll(subscription.identifier).length @sendCommand(subscription, "unsubscribe") + reject: (identifier) -> + for subscription in @findAll(identifier) + @forget(subscription) + @notify(subscription, "rejected") + + forget: (subscription) -> + @subscriptions = (s for s in @subscriptions when s isnt subscription) + findAll: (identifier) -> s for s in @subscriptions when s.identifier is identifier + reload: -> + for subscription in @subscriptions + @sendCommand(subscription, "subscribe") + notifyAll: (callbackName, args...) -> for subscription in @subscriptions @notify(subscription, callbackName, args...) @@ -48,7 +57,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}) |