y-rb_actioncable 0.1.2 → 0.1.4
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 +4 -4
- data/README.md +2 -7
- data/lib/y/actioncable/sync.rb +14 -4
- data/lib/y/actioncable/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f06116e8fced707775ecdbc580d8b46b7ae6f0a0e2e55042b94785da6765516
|
4
|
+
data.tar.gz: e6a8acf34ac91161f2b270459a9155bafeed09398c578d08c344051ee173573a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb45227353a4f55e880908a59abf2ca9e8afd1f61eb011eed431bc4a64db4acae033bea610b230691134eceaa981015a6fddac7ba34e83eaaf20f64065431092
|
7
|
+
data.tar.gz: b35bfce523b71dd05af4f714707e5a13623b95332021dbab705b4bd27703e747324bbfd7051ccdea868415f7048cc6c87c62db1779c09bb04272d83a88dac9eb
|
data/README.md
CHANGED
@@ -60,13 +60,8 @@ class SyncChannel < ApplicationCable::Channel
|
|
60
60
|
include Y::Actioncable::Sync
|
61
61
|
|
62
62
|
def subscribed
|
63
|
-
|
64
|
-
|
65
|
-
integrate(message)
|
66
|
-
end
|
67
|
-
|
68
|
-
# negotiate initial state with client
|
69
|
-
initiate
|
63
|
+
# initiate sync & subscribe to updates, with optional persistence mechanism
|
64
|
+
sync_from("document-1")
|
70
65
|
end
|
71
66
|
|
72
67
|
def receive(message)
|
data/lib/y/actioncable/sync.rb
CHANGED
@@ -87,7 +87,10 @@ module Y
|
|
87
87
|
|
88
88
|
# do not transmit message back to current connection if the connection
|
89
89
|
# is the origin of the message
|
90
|
-
|
90
|
+
connection_identifier = connection.connection_identifier
|
91
|
+
return if connection_identifier.present? && origin == connection_identifier
|
92
|
+
|
93
|
+
transmit(message)
|
91
94
|
end
|
92
95
|
|
93
96
|
# Sync for given model. This is a utility method that simplifies the setup
|
@@ -150,7 +153,7 @@ module Y
|
|
150
153
|
# we broadcast to all connected clients, but provide the
|
151
154
|
# connection_identifier as origin so that the [#integrate] method is
|
152
155
|
# able to filter sending back the update to its origin.
|
153
|
-
|
156
|
+
ActionCable.server.broadcast(
|
154
157
|
broadcasting,
|
155
158
|
{ update: update, origin: connection.connection_identifier }
|
156
159
|
)
|
@@ -197,8 +200,7 @@ module Y
|
|
197
200
|
# "issue_channel:id:1"
|
198
201
|
def canonical_channel_key
|
199
202
|
@canonical_channel_key ||= begin
|
200
|
-
|
201
|
-
params_part = pairs.map do |k, v|
|
203
|
+
params_part = channel_identifier.map do |k, v|
|
202
204
|
"#{k.to_s.parameterize}-#{v.to_s.parameterize}"
|
203
205
|
end
|
204
206
|
|
@@ -257,6 +259,14 @@ module Y
|
|
257
259
|
def doc
|
258
260
|
@doc ||= Y::Doc.new
|
259
261
|
end
|
262
|
+
|
263
|
+
private
|
264
|
+
|
265
|
+
def channel_identifier
|
266
|
+
return ["test", identifier] if Rails.env.test?
|
267
|
+
|
268
|
+
JSON.parse(identifier)
|
269
|
+
end
|
260
270
|
end
|
261
271
|
end
|
262
272
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: y-rb_actioncable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hannes Moser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
requirements: []
|
99
|
-
rubygems_version: 3.4.
|
99
|
+
rubygems_version: 3.4.5
|
100
100
|
signing_key:
|
101
101
|
specification_version: 4
|
102
102
|
summary: An ActionCable companion for Y.js clients.
|