render_turbo_stream 1.4.14 → 1.4.15

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
  SHA256:
3
- metadata.gz: c2c84aacdaefecd60e436ebd13e68801e87d02d3318ded429a643605b2ec94a3
4
- data.tar.gz: 1b6089600ec4abe349d2cae88a1802f258a535e2303f9289cc29ec0e7c09bf66
3
+ metadata.gz: ddf2d67786644e4776a58ead9c9bd705d54aa20e6c2a7f2a50383bcc59eacbc4
4
+ data.tar.gz: e5dce474494ad9076d96390ef06fca96b7303e821d2326e6d7b4a4b737f96670
5
5
  SHA512:
6
- metadata.gz: 83b71f6a084d9da96a09d710bc64c46506a424a8d704838ed0b91b54853cf799d3c1c336c2059bfd23f8ec70581f850c87341bbc03419efe2627c762fee94ff3
7
- data.tar.gz: a623f4b6acf363a224adfbf4e4e246bec3fcd3f3cc267452ee66bb8bdd6067d0c50a94de45611edbd1640ab25c567d05a9a4853d24d2fbe885a8e2427c336454
6
+ metadata.gz: c86bcd83fb42ebd8286c981e3a1d80d7b37d8ab3ae524f91679a2a3734429692cb3be356199252bbabb9161d056214fd7a63454095259b8cc95ba9bd62eb341e
7
+ data.tar.gz: 8330c7f4b8d178d68a7be8f8b54d76a6de88676c17178a2e46878934d2c3ecedac4bc968ffa78828e7fa6288324551698f5def18aff073883de0ab3fee42d63a
data/README.md CHANGED
@@ -155,9 +155,6 @@ def update
155
155
  :turbo_frame_set_src,
156
156
  'cars-box',
157
157
  cars_path
158
- ],
159
- [
160
- #... more actions possible ...
161
158
  ]
162
159
  ]
163
160
  )
@@ -165,6 +162,17 @@ def update
165
162
 
166
163
  ```
167
164
 
165
+ **Turbo::StreamsChannel**
166
+
167
+ Another workaround as described above, but with more advantages, is to use Turbo Streams, which are seamlessly integrated into `turbo rails`. See the [README](https://gitlab.com/sedl/renderturbostream/-/blob/main/README-cable.md).
168
+ If setup well and configured by
169
+
170
+ ```ruby
171
+ config.x.render_turbo_stream.use_cable = true
172
+ ```
173
+
174
+ The `turbo_stream_save` method, in the case of classical redirects (by redirect_to), would send the flashes plus additional partials, declared on arguments by `Turbo::StreamsChannel` in parallel to the redirect.
175
+
168
176
  **Parameters for turbo_stream_save**
169
177
 
170
178
  save_action,
@@ -1,22 +1,51 @@
1
1
  module RenderTurboStream
2
- module TurboCableHelpers
2
+ module TurboCableHelpers
3
3
 
4
+ def turbo_cable_to_authenticated
5
+ if user_signed_in?
4
6
 
5
- def turbo_cable_to_authenticated
6
-
7
- end
7
+ end
8
+ end
8
9
 
9
- def turbo_cable_to_current_user(target, action, *args, partial: nil, locals: nil)
10
- if [:append, :prepend, :replace].include?(action.to_sym)
11
- Turbo::StreamsChannel.send("broadcast_#{action}_to", "current_user_#{helpers.current_user.id}", *args, target: target, partial: partial, locals: locals)
12
- else
13
- # Turbo::StreamsChannel.broadcast_action_to(
14
- # "current_user_#{helpers.current_user.id}",
15
- # action:'toggle_css_class',
16
- # 'colored-element'
17
- # )
10
+ def turbo_cable_to_current_user(target, action, *args, partial: nil, locals: nil)
11
+ if Rails.env.test?
12
+ args = {
13
+ target: target,
14
+ action: action,
15
+ type: 'turbo-cable-partial',
16
+ args: args,
17
+ partial: partial,
18
+ locals: locals
19
+ }
20
+ h = response.headers.to_h
21
+ i = 1
22
+ loop do
23
+ k = "test-turbo-cable-#{i}"
24
+ unless h.keys.include?(k)
25
+ response.headers[k] = args.to_json
26
+ break
18
27
  end
28
+ i += 1
19
29
  end
20
-
30
+ end
31
+ if [:append, :prepend, :replace].include?(action.to_sym)
32
+ Turbo::StreamsChannel.send(
33
+ "broadcast_#{action}_to",
34
+ "current_user_#{helpers.current_user.id}",
35
+ *args,
36
+ target: target,
37
+ partial: partial,
38
+ locals: locals,
39
+ layout: false
40
+ )
41
+ else
42
+ # Turbo::StreamsChannel.broadcast_action_to(
43
+ # "current_user_#{helpers.current_user.id}",
44
+ # action:'toggle_css_class',
45
+ # 'colored-element'
46
+ # )
47
+ end
21
48
  end
49
+
50
+ end
22
51
  end
@@ -1,3 +1,3 @@
1
1
  module RenderTurboStream
2
- VERSION = "1.4.14"
2
+ VERSION = "1.4.15"
3
3
  end
@@ -16,6 +16,7 @@ module RenderTurboStream
16
16
  id: nil, # if nil: no partial is rendered
17
17
  partial: nil, # example: 'customers/form' default: "#{controller_path}/#{id}"
18
18
  action: 'replace', # options: append, prepend
19
+ flash_action: action_name, # options: 'update', 'create', otherwise you have to declare a translation in config/locales like "activerecord.success.#{flash_action}" and "activerecord.errors.#{flash_action}"
19
20
  locals: {}, # locals used by the partial
20
21
  streams_on_success: [
21
22
  {
@@ -67,35 +68,47 @@ module RenderTurboStream
67
68
  if save_action
68
69
  flash_notices = if flashes_on_success.present?
69
70
  flashes_on_success
70
- elsif action_name == 'create'
71
+ elsif flash_action.to_s == 'create'
71
72
  str = I18n.t(
72
73
  'activerecord.success.successfully_created',
73
74
  default: '%<model_name>s successfully created'
74
75
  )
75
76
  [format(str, model_name: model_name)]
76
- elsif action_name == 'update'
77
+ elsif flash_action.to_s == 'update'
77
78
  str = I18n.t(
78
79
  'activerecord.success.successfully_updated',
79
80
  default: '%<model_name>s successfully updated'
80
81
  )
81
82
  [format(str, model_name: model_name)]
83
+ else
84
+ str = I18n.t(
85
+ "activerecord.success.#{flash_action}",
86
+ default: '%<model_name>s successfully updated'
87
+ )
88
+ [format(str, model_name: model_name)]
82
89
  end
83
90
  flash_alerts = []
84
91
  else
85
92
  flash_alerts = if flashes_on_error.present?
86
93
  flashes_on_error
87
- elsif action_name == 'create'
94
+ elsif flash_action.to_s == 'create'
88
95
  str = I18n.t(
89
96
  'activerecord.errors.messages.could_not_create',
90
97
  default: '%<model_name>s could not be created'
91
98
  )
92
99
  [format(str, model_name: model_name)]
93
- elsif action_name == 'update'
100
+ elsif flash_action.to_s == 'update'
94
101
  str = I18n.t(
95
102
  'activerecord.errors.messages.could_not_update',
96
103
  default: '%<model_name>s could not be updated'
97
104
  )
98
105
  [format(str, model_name: model_name)]
106
+ else
107
+ str = I18n.t(
108
+ "activerecord.errors.messages.#{flash_action}",
109
+ default: '%<model_name>s could not be updated'
110
+ )
111
+ [format(str, model_name: model_name)]
99
112
  end
100
113
  flash_notices = []
101
114
  end
@@ -145,10 +158,24 @@ module RenderTurboStream
145
158
  ])
146
159
  elsif save_action && redirect_on_success_to.present?
147
160
  response.status = 302
148
- flash[:alert] = flash_alerts
149
- flash[:notice] = flash_notices
150
- Rails.logger.debug(" • Set flash[:alert] => #{flash_alerts}") if flash_alerts.present?
151
- Rails.logger.debug(" • Set flash[:notice] => #{flash_notices}") if flash_notices.present?
161
+ if Rails.configuration.x.render_turbo_stream.use_cable && helpers.user_signed_in?
162
+ streams.each do |s|
163
+ next unless s.is_a?(Hash)
164
+ Rails.logger.debug(" • Send by Cable => «#{s}»")
165
+ turbo_cable_to_current_user(
166
+ s[:id],
167
+ :prepend,
168
+ partial: s[:partial],
169
+ locals: s[:locals]
170
+ )
171
+ end
172
+
173
+ else
174
+ flash[:alert] = flash_alerts
175
+ flash[:notice] = flash_notices
176
+ Rails.logger.debug(" • Set flash[:alert] => #{flash_alerts}") if flash_alerts.present?
177
+ Rails.logger.debug(" • Set flash[:notice] => #{flash_notices}") if flash_notices.present?
178
+ end
152
179
  redirect_to redirect_on_success_to
153
180
 
154
181
  else
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: 1.4.14
4
+ version: 1.4.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - christian