aboutsummaryrefslogtreecommitdiffstats
path: root/actioncable/app/assets/javascripts/action_cable/subscriptions.coffee
diff options
context:
space:
mode:
authorJavan Makhmali <javan@javan.us>2018-11-02 16:03:06 -0500
committerGitHub <noreply@github.com>2018-11-02 16:03:06 -0500
commitb858c2c76cbe66b50df81372156d4b6f6e187be1 (patch)
tree119448211713b6a172b301ab164dd54dd5718654 /actioncable/app/assets/javascripts/action_cable/subscriptions.coffee
parentd80925b169f0db950697868f5659a67cc03e8654 (diff)
parentc96139af71e6f7c36e25bccea6b05ccd9523531a (diff)
downloadrails-b858c2c76cbe66b50df81372156d4b6f6e187be1.tar.gz
rails-b858c2c76cbe66b50df81372156d4b6f6e187be1.tar.bz2
rails-b858c2c76cbe66b50df81372156d4b6f6e187be1.zip
Merge pull request #34177 from rmacklin/convert-actioncable-to-es2015
Convert ActionCable javascript to ES2015 modules with a modern build environment
Diffstat (limited to 'actioncable/app/assets/javascripts/action_cable/subscriptions.coffee')
-rw-r--r--actioncable/app/assets/javascripts/action_cable/subscriptions.coffee66
1 files changed, 0 insertions, 66 deletions
diff --git a/actioncable/app/assets/javascripts/action_cable/subscriptions.coffee b/actioncable/app/assets/javascripts/action_cable/subscriptions.coffee
deleted file mode 100644
index aa052bf5d8..0000000000
--- a/actioncable/app/assets/javascripts/action_cable/subscriptions.coffee
+++ /dev/null
@@ -1,66 +0,0 @@
-# Collection class for creating (and internally managing) channel subscriptions. The only method intended to be triggered by the user
-# us ActionCable.Subscriptions#create, and it should be called through the consumer like so:
-#
-# @App = {}
-# App.cable = ActionCable.createConsumer "ws://example.com/accounts/1"
-# App.appearance = App.cable.subscriptions.create "AppearanceChannel"
-#
-# For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.
-class ActionCable.Subscriptions
- constructor: (@consumer) ->
- @subscriptions = []
-
- create: (channelName, mixin) ->
- channel = channelName
- params = if typeof channel is "object" then channel else {channel}
- subscription = new ActionCable.Subscription @consumer, params, mixin
- @add(subscription)
-
- # Private
-
- add: (subscription) ->
- @subscriptions.push(subscription)
- @consumer.ensureActiveConnection()
- @notify(subscription, "initialized")
- @sendCommand(subscription, "subscribe")
- subscription
-
- remove: (subscription) ->
- @forget(subscription)
- unless @findAll(subscription.identifier).length
- @sendCommand(subscription, "unsubscribe")
- subscription
-
- reject: (identifier) ->
- for subscription in @findAll(identifier)
- @forget(subscription)
- @notify(subscription, "rejected")
- subscription
-
- forget: (subscription) ->
- @subscriptions = (s for s in @subscriptions when s isnt subscription)
- 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...)
-
- notify: (subscription, callbackName, args...) ->
- if typeof subscription is "string"
- subscriptions = @findAll(subscription)
- else
- subscriptions = [subscription]
-
- for subscription in subscriptions
- subscription[callbackName]?(args...)
-
- sendCommand: (subscription, command) ->
- {identifier} = subscription
- @consumer.send({command, identifier})