Module: ReactEmailRails::ActionMailer

Extended by:
ActiveSupport::Concern
Defined in:
lib/react_email_rails/action_mailer.rb

Constant Summary collapse

SHARED_FILTER_OPTIONS =

‘react_email_share` kwargs reserved for `before_action` filtering, not prop data.

[:if, :unless, :only, :except].freeze

Instance Method Summary collapse

Instance Method Details

#mail(headers = {}, &block) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/react_email_rails/action_mailer.rb', line 30

def mail(headers = {}, &block)
  return super unless headers.is_a?(Hash) && headers.key?(:react)

  headers = headers.dup
  react = headers.delete(:react)
  props = headers.delete(:props) if headers.key?(:props)
  deep_merge = headers.delete(:deep_merge) if headers.key?(:deep_merge)

  component, resolved_props = ReactEmailRails::PropsResolver.new(self).resolve(react, props)
  resolved_props = ReactEmailRails::SharedProps.new(self).merge_into(
    resolved_props,
    deep_merge: react_email_deep_merge?(deep_merge),
  )

  super(headers) do |format|
    rendered = react_email_render(component, resolved_props)

    format.html { rendered.html }
    format.text { rendered.text } if rendered.text.present?

    yield(format) if block
  end
end

#react_email_share(hash = nil, **props, &block) ⇒ Object



26
27
28
# File 'lib/react_email_rails/action_mailer.rb', line 26

def react_email_share(hash = nil, **props, &block)
  react_email_append_shared(hash || props, block)
end