From fdd5c925f5ee668ecf7a21b90b90a5f01b535d13 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 8 Jul 2015 11:06:07 +0200 Subject: Move the subscription factory method from the consumer to the subscriptions collection --- lib/assets/javascripts/cable/consumer.js.coffee | 7 +------ lib/assets/javascripts/cable/subscription.js.coffee | 7 ++++--- lib/assets/javascripts/cable/subscriptions.js.coffee | 5 +++++ 3 files changed, 10 insertions(+), 9 deletions(-) (limited to 'lib/assets/javascripts/cable') 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") -- cgit v1.2.3