From 122072da92b29a80d9bcb8ed840ddf9b010aafda Mon Sep 17 00:00:00 2001 From: Julian Rubisch Date: Thu, 21 Jul 2022 14:29:09 +0200 Subject: [PATCH 1/2] chore: Refactor / consolidate morph method --- lib/stimulus_reflex/reflex.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/stimulus_reflex/reflex.rb b/lib/stimulus_reflex/reflex.rb index 911d2671..c48b6ead 100644 --- a/lib/stimulus_reflex/reflex.rb +++ b/lib/stimulus_reflex/reflex.rb @@ -20,7 +20,7 @@ class VersionMismatchError < StandardError; end delegate :connection, :stream_name, to: :channel delegate :controller_class, :flash, :session, to: :request - delegate :broadcast, :broadcast_halt, :broadcast_forbid, :broadcast_error, to: :broadcaster + delegate :broadcast_halt, :broadcast_forbid, :broadcast_error, to: :broadcaster delegate :reflex_id, :tab_id, :reflex_controller, :xpath_controller, :xpath_element, :permanent_attribute_name, :version, :suppress_logging, to: :client_attributes def initialize(channel, url: nil, element: nil, selectors: [], method_name: nil, params: {}, client_attributes: {}) @@ -31,7 +31,6 @@ def initialize(channel, url: nil, element: nil, selectors: [], method_name: nil, @method_name = method_name @params = params @client_attributes = ClientAttributes.new(client_attributes) - @broadcaster = StimulusReflex::PageBroadcaster.new(self) @logger = suppress_logging ? nil : StimulusReflex::Logger.new(self) @payload = {} @headers = {} @@ -80,10 +79,17 @@ def request end end + def broadcast(*args) + morph :page if broadcaster.nil? + + broadcaster.broadcast(*args) + end + def morph(selectors, html = nil) case selectors when :page - raise StandardError.new("Cannot call :page morph after :#{broadcaster.to_sym} morph") unless broadcaster.page? + raise StandardError.new("Cannot call :page morph after :#{broadcaster.to_sym} morph") if broadcaster&.selector? || broadcaster&.nothing? + @broadcaster = StimulusReflex::PageBroadcaster.new(self) when :nothing raise StandardError.new("Cannot call :nothing morph after :selector morph") if broadcaster.selector? @broadcaster = StimulusReflex::NothingBroadcaster.new(self) unless broadcaster.nothing? From b75317278077bf31dcd6610f44fd4b0a570aafa8 Mon Sep 17 00:00:00 2001 From: Julian Rubisch Date: Fri, 22 Jul 2022 08:08:39 +0200 Subject: [PATCH 2/2] chore: Patch broadcast_(error|forbid|halt) --- lib/stimulus_reflex/reflex.rb | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/stimulus_reflex/reflex.rb b/lib/stimulus_reflex/reflex.rb index c48b6ead..ac695bc8 100644 --- a/lib/stimulus_reflex/reflex.rb +++ b/lib/stimulus_reflex/reflex.rb @@ -20,7 +20,6 @@ class VersionMismatchError < StandardError; end delegate :connection, :stream_name, to: :channel delegate :controller_class, :flash, :session, to: :request - delegate :broadcast_halt, :broadcast_forbid, :broadcast_error, to: :broadcaster delegate :reflex_id, :tab_id, :reflex_controller, :xpath_controller, :xpath_element, :permanent_attribute_name, :version, :suppress_logging, to: :client_attributes def initialize(channel, url: nil, element: nil, selectors: [], method_name: nil, params: {}, client_attributes: {}) @@ -85,6 +84,24 @@ def broadcast(*args) broadcaster.broadcast(*args) end + def broadcast_halt(data:) + morph :page if broadcaster.nil? + + broadcaster.broadcast_halt(data: data) + end + + def broadcast_forbid(data:) + morph :page if broadcaster.nil? + + broadcaster.broadcast_forbid(data: data) + end + + def broadcast_error(data:, body:) + morph :page if broadcaster.nil? + + broadcaster.broadcast_error(data: data, body: body) + end + def morph(selectors, html = nil) case selectors when :page