render_turbo_stream 2.0.0 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1923db5dbed0c8a3f0cc583ba8de9469b16f0d09fdf3d46b48002ee1099537a
4
- data.tar.gz: 7c2bdf446e15de06c2704311fc2725b84613592ac91827eaa4df69a51d383d1a
3
+ metadata.gz: 9858266fb82670a9ef99550a3acb17c4d744299969634a16dc34f05a62b6e5e7
4
+ data.tar.gz: 445dd3768ef6674b7286fb55d7738f9c112c31f5d57841f8fb8b4390c64b31af
5
5
  SHA512:
6
- metadata.gz: f2258c4ae8b77734f82837a883011591a5d6798d1110f3b63cf7ea557a3a3c60e8f5a358dd9a3dc963c02e0215979d91842d25dd94dfaf6c79e8cc3cc4483e59
7
- data.tar.gz: 1495b280772066632effbc8bf484c9d5aa867e3c8fe86d745b6264fb1e0b029420be850bfe432765ade82bc0d5617fcb1dcce2ca2a5611e4c8e01b150483f5bb
6
+ metadata.gz: dae6e979f4abed3f7b287a9fe5d39d8a2b3c7d0e92f4048d1bc551ddedfd39fd365c26cc8bf7be1c67d6e21a63f22670107e292ba50728db824c09ed48cbaf91
7
+ data.tar.gz: 1c5feab440874cc4f8e75324b60c1f352eb4a0cc54a38ff55598250f898e02bd5fbe454ea68fb6542a12f3b6c1eeab8493a2f7c146861c3010295eaedb58a7c2
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # RenderTurboStream
2
2
 
3
- Defining templates like `(create|update).turbo_stream.haml` annoyed me.
4
-
5
- The biggest advantage of this gem is the testing strategy.
3
+ Defining templates like `(create|update).turbo_stream.haml` annoyed me and I was looking for a testing strategy.
6
4
 
7
5
  Working consistently with turbo_stream means shooting lots of partials from the backend to the frontend. This always requires the same attributes: the path to the partial, the html-id that turbo_stream points to, and maybe some locals. This gem serialises that: Partials can be controlled directly from the controller. It sets the status, generates a flash message, handles redirection, pushes it all to the front. Includes helpers for enabling request tests.
8
6
 
@@ -0,0 +1,4 @@
1
+ module RenderTurboStream
2
+ class RenderTurboStreamRenderController < ActionController::Base
3
+ end
4
+ end
@@ -1,61 +1,70 @@
1
1
  module RenderTurboStream
2
2
  module TurboCableHelpers
3
3
 
4
- def cable_to_all_authenticated_users
5
- if user_signed_in?
4
+ # def cable_partial_to_all_authenticated_users
5
+ # raise "Function cable_partial_to_all_authenticated_users is "
6
+ # if user_signed_in?
7
+ #
8
+ # end
9
+ # end
6
10
 
7
- end
8
- end
11
+ def cable_partial_to_channel(action, channel, partial, id, locals: nil)
9
12
 
10
- def cable_to_me(id, action, *args, partial: nil, locals: nil)
11
- begin
12
- u_id = helpers.current_user&.id
13
- a=1
14
- unless u_id.present?
15
- Rails.logger.debug(' • SKIP RenderTurboStream.cable_to_me because current_user is nil')
16
- return
17
- end
18
- rescue
19
- Rails.logger.debug(' • ERROR RenderTurboStream.cable_to_me because current_user is not available')
20
- return
21
- end
13
+ # add headers for test
22
14
  if Rails.env.test?
23
15
  args = {
24
16
  target: "##{id}",
25
17
  action: action,
26
18
  type: 'cable-partial',
27
- args: args,
28
19
  partial: partial,
29
20
  locals: locals
30
21
  }
22
+ html = RenderTurboStreamRenderController.render(partial: partial, locals: locals)
31
23
  h = response.headers.to_h
32
24
  i = 1
33
25
  loop do
34
- k = "test-turbo-cable-#{i}"
35
- unless h.keys.include?(k)
36
- response.headers[k] = args.to_json
37
- break
38
- end
26
+ k = "test-turbo-cable-#{i}"
27
+ unless h.keys.include?(k)
28
+ response.headers[k] = args.to_json
29
+ response.headers["#{k}-html"] = html.to_s
30
+ break
31
+ end
39
32
  i += 1
40
33
  end
41
34
  end
42
- if [:append, :prepend, :replace].include?(action.to_sym)
43
- Turbo::StreamsChannel.send(
44
- "broadcast_#{action}_to",
45
- "current_user_#{helpers.current_user.id}",
46
- *args,
47
- target: id,
48
- partial: partial,
49
- locals: locals&.symbolize_keys,
50
- layout: false
51
- )
52
- else
53
- # Turbo::StreamsChannel.broadcast_action_to(
54
- # "current_user_#{helpers.current_user.id}",
55
- # action:'toggle_css_class',
56
- # 'colored-element'
57
- # )
35
+
36
+ # send
37
+
38
+ Turbo::StreamsChannel.send(
39
+ "broadcast_#{action}_to",
40
+ channel.to_s,
41
+ target: id,
42
+ partial: partial,
43
+ locals: locals&.symbolize_keys,
44
+ layout: false
45
+ )
46
+ end
47
+
48
+ def cable_partial_to_me(partial, id, action: :replace, locals: nil)
49
+ begin
50
+ u_id = helpers.current_user&.id
51
+ a=1
52
+ unless u_id.present?
53
+ Rails.logger.debug(' • SKIP RenderTurboStream.cable_partial_to_me because current_user is nil')
54
+ return
55
+ end
56
+ rescue
57
+ Rails.logger.debug(' • ERROR RenderTurboStream.cable_partial_to_me because current_user is not available')
58
+ return
58
59
  end
60
+
61
+ cable_partial_to_channel(
62
+ action,
63
+ "current_user_#{helpers.current_user.id}",
64
+ partial,
65
+ id,
66
+ locals: locals
67
+ )
59
68
  end
60
69
 
61
70
  end
@@ -9,12 +9,16 @@ module RenderTurboStream
9
9
  end
10
10
  end
11
11
 
12
- def cable_from_all_authenticated_users
13
- if user_signed_in?
14
- turbo_stream_from "all_authenticated_users"
15
- else
16
- Rails.logger.debug(" • SKIP CABLE_FROM_ALL_AUTHENTICATED_USERS because not authenticated")
17
- end
12
+ # def cable_from_all_authenticated_users
13
+ # if user_signed_in?
14
+ # turbo_stream_from "all_authenticated_users"
15
+ # else
16
+ # Rails.logger.debug(" • SKIP CABLE_FROM_ALL_AUTHENTICATED_USERS because not authenticated")
17
+ # end
18
+ # end
19
+
20
+ def cable_from_all
21
+ turbo_stream_from "all"
18
22
  end
19
23
 
20
24
  def local_model(object)
@@ -1,3 +1,3 @@
1
1
  module RenderTurboStream
2
- VERSION = "2.0.0"
2
+ VERSION = "2.0.2"
3
3
  end
@@ -162,10 +162,10 @@ module RenderTurboStream
162
162
  streams.each do |s|
163
163
  next unless s.is_a?(Hash)
164
164
  Rails.logger.debug(" • Send by Cable => «#{s}»")
165
- cable_to_me(
165
+ cable_partial_to_me(
166
+ s[:partial],
166
167
  s[:id],
167
- :prepend,
168
- partial: s[:partial],
168
+ action: flash_action,
169
169
  locals: s[:locals]
170
170
  )
171
171
  end
@@ -245,7 +245,8 @@ module RenderTurboStream
245
245
  cables = response.headers.to_h.select { |k| k.match(/^test-turbo-cable-[\d]+$/) }
246
246
  cables.each do |k, v|
247
247
  args = JSON.parse(v)
248
- html = ApplicationController.render(partial: args['partial'], locals: args['locals'].symbolize_keys)
248
+ #html = ApplicationController.render(partial: args['partial'], locals: args['locals'].symbolize_keys)
249
+ html = response.headers["#{k}-html"]
249
250
  res.push(
250
251
  args.merge(
251
252
  {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: render_turbo_stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - christian
@@ -24,11 +24,11 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 7.0.4.3
27
- description: This gem handles translated flash messages, sets status, and renders
28
- partials via turbo-stream directly from the controller. No need to write *.turbo_stream.*
29
- templates. Together with the turbo_power gem or custom turbo-stream actions, you
30
- can run javascript. Redirects can now be handled easily and in multiple ways. Includes
31
- helpers for enabling request tests.
27
+ description: Handles translated flash messages, sets status, and renders partials
28
+ via Turbo Stream or Turbo::StreamsChannel directly from the controller. No need
29
+ to write *.turbo_stream.* templates. Together with the turbo_power gem or custom
30
+ turbo-stream actions, you can run javascript. Redirects can now be handled easily
31
+ and in multiple ways. Includes helpers for enabling request tests.
32
32
  email:
33
33
  - christian@sedlmair.ch
34
34
  executables: []
@@ -38,6 +38,7 @@ files:
38
38
  - README.md
39
39
  - Rakefile
40
40
  - app/controllers/render_turbo_stream/application_controller.rb
41
+ - app/controllers/render_turbo_stream/render_turbo_stream_render_controller.rb
41
42
  - app/models/render_turbo_stream/cable_stream.rb
42
43
  - app/views/render_turbo_stream.html.erb
43
44
  - app/views/render_turbo_stream.turbo_stream.erb