diff options
-rw-r--r-- | lib/assets/javascripts/cable/connection.coffee | 13 | ||||
-rw-r--r-- | lib/assets/javascripts/cable/subscriptions.coffee | 24 |
2 files changed, 19 insertions, 18 deletions
diff --git a/lib/assets/javascripts/cable/connection.coffee b/lib/assets/javascripts/cable/connection.coffee index 9de3cc0be4..b6b99413dc 100644 --- a/lib/assets/javascripts/cable/connection.coffee +++ b/lib/assets/javascripts/cable/connection.coffee @@ -55,14 +55,17 @@ class Cable.Connection {identifier, message, type} = JSON.parse(event.data) if type? - switch type - when Cable.INTERNAL_MESSAGES.SUBSCRIPTION_CONFIRMATION - @consumer.subscriptions.notify(identifier, "connected") - when Cable.INTERNAL_MESSAGES.SUBSCRIPTION_REJECTION - @consumer.subscriptions.rejectSubscription(identifier) + @handleTypeMessage(type) else @consumer.subscriptions.notify(identifier, "received", message) + onTypeMessage: (type) -> + switch type + when Cable.INTERNAL_MESSAGES.SUBSCRIPTION_CONFIRMATION + @consumer.subscriptions.notify(identifier, "connected") + when Cable.INTERNAL_MESSAGES.SUBSCRIPTION_REJECTION + @consumer.subscriptions.reject(identifier) + open: -> @disconnected = false @consumer.subscriptions.reload() diff --git a/lib/assets/javascripts/cable/subscriptions.coffee b/lib/assets/javascripts/cable/subscriptions.coffee index 497fcb074e..13db32eb2c 100644 --- a/lib/assets/javascripts/cable/subscriptions.coffee +++ b/lib/assets/javascripts/cable/subscriptions.coffee @@ -23,29 +23,27 @@ class Cable.Subscriptions @notify(subscription, "initialized") @sendCommand(subscription, "subscribe") - reload: -> - for subscription in @subscriptions - @sendCommand(subscription, "subscribe") - - rejectSubscription: (identifier) -> - subscriptions = @findAll(identifier) - - for subscription in subscriptions - @removeSubscription(subscription) - @notify(subscription, "rejected") - remove: (subscription) -> - @removeSubscription(subscription) + @forget(subscription) unless @findAll(subscription.identifier).length @sendCommand(subscription, "unsubscribe") - removeSubscription: (subscription) -> + 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...) |