opal-actioncable 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f02264089fcb2f605f6176051ea09646300edbd7
4
- data.tar.gz: 2770dae1cf768542bf677e1f8c98ed7aafc90c52
3
+ metadata.gz: cb888a04e6ababbd2a42b5df4da76631f8e52442
4
+ data.tar.gz: bed2a15fd759297c4e80ac65f7c2054fd3eca33b
5
5
  SHA512:
6
- metadata.gz: 1e011c93239a69cedbb18c5a6e499f5f490955f1c2de3ae600518445819235d5edea921d3f308fe90b0be8ce4ed4bf6b998b3e7ad6467bd2db4ae0b274c13ae3
7
- data.tar.gz: c703b84afe5ac401f9e5caebaf6e3ed9b2b9fb8a89b96368c3dd8b20f008709f46ee983733e9c40e31e14c4dc8c11478edc7ee2ee5b25c7c36c9282bea48c139
6
+ metadata.gz: eeff47524c87c954267e3472beccfd37586f3c73b37296beddfdb8a904563211823542adaa15e41c0dae8547e9ef9f96909e14c4c32f1f431971502e88e45f5b
7
+ data.tar.gz: ffd9aafe2c76b9eb8465e58e4a8297d6e42f94ae7cbe9800228dca5532efb8e7ac2afe8dea7757fb3c1d9646b692b8b22f22e2a32209c08f7bcbff43a6d03fe5
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module ActionCable
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -3,6 +3,9 @@ class ActionCable::Connection
3
3
 
4
4
  def initialize consumer
5
5
  @native = `new ActionCable.Connection(#{consumer})`
6
+ @subscriptions = consumer.subscriptions
7
+ @monitor = ConnectionMonitor.new self
8
+
6
9
  %x{
7
10
  Opal.defn(self.$class(), 'send', function(){ return self.$delegate_native('send', arguments); });
8
11
  Opal.defn(self.$class(), 'open', function(){ return self.$delegate_native('open', arguments); });
@@ -20,10 +23,11 @@ class ActionCable::Connection
20
23
  end
21
24
 
22
25
  def send data
26
+ data = `#{`#{data}['$is_a?']` ? data.to_n : data}`
23
27
  `#{@native}.send(#{data})`
24
28
  end
25
29
 
26
- def delegate_native name, args
30
+ def delegate_native name, args=nil
27
31
  `#{@native}[#{name}].apply(#{@native}, args)`
28
32
  end
29
33
 
@@ -1,31 +1,32 @@
1
- class ActionCable::Connection
1
+ class ActionCable::Consumer
2
2
  include Native::Helpers
3
+ attr_reader :subscriptions, :connection, :connectionMonitor
3
4
 
4
- def initialize consumer
5
- @native = `new ActionCable.Connection(#{consumer})`
5
+ def initialize url
6
+ @url = url
7
+ @subscriptions = ActionCable::Subscriptions.new self
8
+ @connection = ActionCable::Connection.new self
6
9
  %x{
7
- Opal.defn(self.$class(), 'send', function(){ return self.$delegate_native('send', arguments); });
8
- Opal.defn(self.$class(), 'open', function(){ return self.$delegate_native('open', arguments); });
9
- Opal.defn(self.$class(), 'close', function(){ return self.$delegate_native('close', arguments); });
10
- Opal.defn(self.$class(), 'reopen', function(){ return self.$delegate_native('reopen', arguments); });
11
- Opal.defn(self.$class(), 'getProtocol', function(){ return self.$delegate_native('getProtocol', arguments); });
12
- Opal.defn(self.$class(), 'isOpen', function(){ return self.$delegate_native('isOpen', arguments); });
13
- Opal.defn(self.$class(), 'isActive', function(){ return self.$delegate_native('isActive', arguments); });
14
- Opal.defn(self.$class(), 'isProtocolSupported', function(){ return self.$delegate_native('isProtocolSupported', arguments); });
15
- Opal.defn(self.$class(), 'isState', function(){ return self.$delegate_native('isState', arguments); });
16
- Opal.defn(self.$class(), 'getState', function(){ return self.$delegate_native('getState', arguments); });
17
- Opal.defn(self.$class(), 'installEventHandlers', function(){ return self.$delegate_native('installEventHandlers', arguments); });
18
- Opal.defn(self.$class(), 'uninstallEventHandlers', function(){ return self.$delegate_native('uninstallEventHandlers', arguments); });
10
+ Opal.defn(self.$class(), 'send', #{self}.$send);
11
+ Opal.defn(self.$class(), 'connect', #{self}.$connect);
12
+ Opal.defn(self.$class(), 'disconnect', #{self}.$disconnect);
13
+ Opal.defn(self.$class(), 'ensureActiveConnection', #{self}.$ensureActiveConnection);
19
14
  }
20
15
  end
21
16
 
22
17
  def send data
23
- `#{@native}.send(#{data})`
18
+ @connection.send data
24
19
  end
25
20
 
26
- def delegate_native name, args
27
- `#{@native}[#{name}].apply(#{@native}, args)`
21
+ def connect
22
+ `#{@connection}.open()`
28
23
  end
29
24
 
30
-
25
+ def disconnect
26
+ `#{@connection}.close({allowReconnect: false})`
27
+ end
28
+
29
+ def ensureActiveConnection
30
+ connect if `!#{@connection}.isActive()`
31
+ end
31
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-actioncable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Añasco
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-05-18 00:00:00.000000000 Z
12
+ date: 2016-05-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: opal
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
68
  version: '0'
69
69
  requirements: []
70
70
  rubyforge_project:
71
- rubygems_version: 2.4.5.1
71
+ rubygems_version: 2.4.5
72
72
  signing_key:
73
73
  specification_version: 4
74
74
  summary: ActionCable adapter for Opal