cubism 0.1.0.pre4 → 0.1.0.pre8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/app/channels/cubism/presence_channel.rb +1 -1
- data/app/channels/cubism/presence_channel.rb~ +24 -1
- data/app/helpers/cubism_helper.rb +1 -1
- data/app/helpers/cubism_helper.rb~ +4 -8
- data/lib/cubism/broadcaster.rb +2 -2
- data/lib/cubism/broadcaster.rb~ +2 -0
- data/lib/cubism/version.rb +1 -1
- data/lib/cubism/version.rb~ +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78c13f49ff9ec762c87ff5140d567612115ac17fe0daf8bea9de1be4787e6c2e
|
4
|
+
data.tar.gz: bcd07dee292eecf9cfd24b3ff370abefb85b17c703ab99cca5e34910fbc70734
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36bfdca925bd8dd03b739d83cf8bffa1d896ae2c27c130ee1e880091ca93ed02ceace37f04575930e9912cbb4ce88bf8e7090e114c763952bb401e06ccabc4a5
|
7
|
+
data.tar.gz: 94849aee2342f7309723638b898f4f3719a98e4c7ffc52559ce981fda7164d9d270f6b9248dfafbe55c2db3a858230af5de2931b611c5567dcfeb3e97dd1e213
|
data/README.md
CHANGED
@@ -92,8 +92,8 @@ CableReady.initialize({ consumer });
|
|
92
92
|
The `cubicle_for` helper accepts the following options as keyword arguments:
|
93
93
|
|
94
94
|
- `exclude_current_user (true|false)`: Whether or not to exclude the current user from the list of present users broadcasted to the view. Useful e.g. for "typing..." indicators.
|
95
|
-
- `appear_trigger`:
|
96
|
-
- `disappear_trigger`: a JavaScript event name (e.g. `:blur`) to use. The default is `:disconnect`, i.e. remove a user form the present users list when the element disconnects from the DOM.
|
95
|
+
- `appear_trigger`: JavaScript event names (e.g. `["focus", "debounced:input]`) to use. (Can also be a singular string, which will be converted to an array). The default is `:connect`, i.e. register a user as "appeared"/"present" when the element connects to the DOM.
|
96
|
+
- `disappear_trigger`: a JavaScript event name (e.g. `:blur`) to use. (Can also be a singular string, which will be converted to an array). The default is `:disconnect`, i.e. remove a user form the present users list when the element disconnects from the DOM.
|
97
97
|
- `trigger_root`: a CSS selector to attach the appear/disappear events to. Defaults to the `cubicle-element` itself.
|
98
98
|
- `html_options` are passed to the TagBuilder.
|
99
99
|
|
@@ -177,4 +177,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
177
177
|
<!-- markdownlint-restore -->
|
178
178
|
<!-- prettier-ignore-end -->
|
179
179
|
|
180
|
-
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
180
|
+
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
@@ -3,7 +3,7 @@ class Cubism::PresenceChannel < ActionCable::Channel::Base
|
|
3
3
|
|
4
4
|
def subscribed
|
5
5
|
if resource.present?
|
6
|
-
|
6
|
+
stream_from params[:element_id]
|
7
7
|
resource.cubicle_element_ids << element_id
|
8
8
|
resource.excluded_user_id_for_element_id[element_id] = user.id if exclude_current_user?
|
9
9
|
else
|
@@ -4,7 +4,8 @@ class Cubism::PresenceChannel < ActionCable::Channel::Base
|
|
4
4
|
def subscribed
|
5
5
|
if resource.present?
|
6
6
|
stream_for resource
|
7
|
-
resource.
|
7
|
+
resource.cubicle_element_ids << element_id
|
8
|
+
resource.excluded_user_id_for_element_id[element_id] = user.id if exclude_current_user?
|
8
9
|
else
|
9
10
|
reject
|
10
11
|
end
|
@@ -13,6 +14,16 @@ class Cubism::PresenceChannel < ActionCable::Channel::Base
|
|
13
14
|
def unsubscribed
|
14
15
|
return unless resource.present?
|
15
16
|
|
17
|
+
resource.cubicle_element_ids.remove(element_id)
|
18
|
+
resource.excluded_user_id_for_element_id.delete(element_id)
|
19
|
+
disappear
|
20
|
+
end
|
21
|
+
|
22
|
+
def appear
|
23
|
+
resource.present_users.add(user.id)
|
24
|
+
end
|
25
|
+
|
26
|
+
def disappear
|
16
27
|
resource.present_users.remove(user.id)
|
17
28
|
end
|
18
29
|
|
@@ -26,4 +37,16 @@ class Cubism::PresenceChannel < ActionCable::Channel::Base
|
|
26
37
|
def user
|
27
38
|
GlobalID::Locator.locate_signed(params[:user])
|
28
39
|
end
|
40
|
+
|
41
|
+
def exclude_current_user?
|
42
|
+
params[:exclude_current_user]
|
43
|
+
end
|
44
|
+
|
45
|
+
def element_id
|
46
|
+
params[:element_id]
|
47
|
+
end
|
48
|
+
|
49
|
+
def url
|
50
|
+
params[:url]
|
51
|
+
end
|
29
52
|
end
|
@@ -9,7 +9,7 @@ module CubismHelper
|
|
9
9
|
tag.cubicle_element(
|
10
10
|
identifier: signed_stream_identifier(resource.to_gid.to_s),
|
11
11
|
user: user.to_sgid.to_s,
|
12
|
-
"appear-trigger": appear_trigger,
|
12
|
+
"appear-trigger": Array(appear_trigger).join(","),
|
13
13
|
"disappear-trigger": disappear_trigger,
|
14
14
|
"trigger-root": trigger_root,
|
15
15
|
id: "cubicle-#{digested_id}",
|
@@ -3,22 +3,18 @@ module CubismHelper
|
|
3
3
|
|
4
4
|
def cubicle_for(resource, user, html_options: {}, appear_trigger: :connect, disappear_trigger: nil, trigger_root: nil, exclude_current_user: true, &block)
|
5
5
|
key = "#{block.source_location.join(":")}:#{resource.to_gid}:#{user.to_gid}"
|
6
|
-
|
7
|
-
|
8
|
-
Cubism.store[verifiable_id] = Cubism::BlockStoreItem.new(context: self, block: block.dup)
|
9
|
-
template = capture(&block)
|
6
|
+
digested_id = ActiveSupport::Digest.hexdigest(key)
|
10
7
|
|
8
|
+
Cubism.store[digested_id] = Cubism::BlockStoreItem.new(context: self, block: block.dup)
|
11
9
|
tag.cubicle_element(
|
12
10
|
identifier: signed_stream_identifier(resource.to_gid.to_s),
|
13
11
|
user: user.to_sgid.to_s,
|
14
12
|
"appear-trigger": appear_trigger,
|
15
13
|
"disappear-trigger": disappear_trigger,
|
16
14
|
"trigger-root": trigger_root,
|
17
|
-
id: "cubicle-#{
|
15
|
+
id: "cubicle-#{digested_id}",
|
18
16
|
"exclude-current-user": exclude_current_user,
|
19
17
|
**html_options
|
20
|
-
)
|
21
|
-
content_tag(:template, template, {slot: "template"})
|
22
|
-
end
|
18
|
+
)
|
23
19
|
end
|
24
20
|
end
|
data/lib/cubism/broadcaster.rb
CHANGED
@@ -18,10 +18,10 @@ module Cubism
|
|
18
18
|
view_context = Cubism.store[block_key].context
|
19
19
|
html = view_context.capture(users_for(resource, element_id), &block)
|
20
20
|
|
21
|
-
cable_ready[
|
21
|
+
cable_ready[element_id].inner_html(
|
22
22
|
selector: "cubicle-element##{element_id}[identifier='#{signed_stream_identifier(resource.to_global_id.to_s)}']",
|
23
23
|
html: html
|
24
|
-
).
|
24
|
+
).broadcast
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
data/lib/cubism/broadcaster.rb~
CHANGED
data/lib/cubism/version.rb
CHANGED
data/lib/cubism/version.rb~
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cubism
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.pre8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julian Rubisch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|