cubism 0.1.0.pre4 → 0.1.0.pre8
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 +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
|