aboutsummaryrefslogtreecommitdiffstats
path: root/lib/assets
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2015-07-08 11:06:07 +0200
committerDavid Heinemeier Hansson <david@loudthinking.com>2015-07-08 11:06:07 +0200
commitfdd5c925f5ee668ecf7a21b90b90a5f01b535d13 (patch)
tree84661fe6b8bb23de3d6e519c1b2516d368f61851 /lib/assets
parent7c6a7f28eb882a7e4eca75fc87c42dd5d9e78d8f (diff)
downloadrails-fdd5c925f5ee668ecf7a21b90b90a5f01b535d13.tar.gz
rails-fdd5c925f5ee668ecf7a21b90b90a5f01b535d13.tar.bz2
rails-fdd5c925f5ee668ecf7a21b90b90a5f01b535d13.zip
Move the subscription factory method from the consumer to the subscriptions collection
Diffstat (limited to 'lib/assets')
-rw-r--r--lib/assets/javascripts/cable/consumer.js.coffee7
-rw-r--r--lib/assets/javascripts/cable/subscription.js.coffee7
-rw-r--r--lib/assets/javascripts/cable/subscriptions.js.coffee5
3 files changed, 10 insertions, 9 deletions
diff --git a/lib/assets/javascripts/cable/consumer.js.coffee b/lib/assets/javascripts/cable/consumer.js.coffee
index b01ae586aa..1df6536831 100644
--- a/lib/assets/javascripts/cable/consumer.js.coffee
+++ b/lib/assets/javascripts/cable/consumer.js.coffee
@@ -12,7 +12,7 @@
#
# @App = {}
# App.cable = Cable.createConsumer "http://example.com/accounts/1"
-# App.appearance = App.cable.createSubscription "AppearanceChannel"
+# App.appearance = App.cable.subscriptions.create "AppearanceChannel"
#
# For more details on how you'd configure an actual channel subscription, see Cable.Subscription.
class Cable.Consumer
@@ -21,11 +21,6 @@ class Cable.Consumer
@connection = new Cable.Connection this
@connectionMonitor = new Cable.ConnectionMonitor this
- createSubscription: (channelName, mixin) ->
- channel = channelName
- params = if typeof channel is "object" then channel else {channel}
- new Cable.Subscription this, params, mixin
-
send: (data) ->
@connection.send(data)
diff --git a/lib/assets/javascripts/cable/subscription.js.coffee b/lib/assets/javascripts/cable/subscription.js.coffee
index 17f5a10868..b60033098a 100644
--- a/lib/assets/javascripts/cable/subscription.js.coffee
+++ b/lib/assets/javascripts/cable/subscription.js.coffee
@@ -1,8 +1,9 @@
class Cable.Subscription
- constructor: (@consumer, params = {}, mixin) ->
+ constructor: (@subscriptions, params = {}, mixin) ->
@identifier = JSON.stringify(params)
extend(this, mixin)
- @consumer.subscriptions.add(this)
+ @subscriptions.add(this)
+ @consumer = @subscriptions.consumer
# Perform a channel action with the optional data passed as an attribute
perform: (action, data = {}) ->
@@ -13,7 +14,7 @@ class Cable.Subscription
@consumer.send(command: "message", identifier: @identifier, data: JSON.stringify(data))
unsubscribe: ->
- @consumer.subscriptions.remove(this)
+ @subscriptions.remove(this)
extend = (object, properties) ->
if properties?
diff --git a/lib/assets/javascripts/cable/subscriptions.js.coffee b/lib/assets/javascripts/cable/subscriptions.js.coffee
index 7cb008ca67..884257a12d 100644
--- a/lib/assets/javascripts/cable/subscriptions.js.coffee
+++ b/lib/assets/javascripts/cable/subscriptions.js.coffee
@@ -2,6 +2,11 @@ class Cable.Subscriptions
constructor: (@consumer) ->
@subscriptions = []
+ create: (channelName, mixin) ->
+ channel = channelName
+ params = if typeof channel is "object" then channel else {channel}
+ new Cable.Subscription this, params, mixin
+
add: (subscription) ->
@subscriptions.push(subscription)
@notify(subscription, "initialized")