Module: ReactEmailRails::ActionMailer

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

Constant Summary collapse

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

Instance Method Summary collapse

Instance Method Details

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



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

def mail(headers = {}, &block)
  return super unless headers.is_a?(Hash)
  return super if headers.empty? && @_mail_was_called

  react = headers.key?(:react) ? headers[:react] : compute_default(self.class.default[:react])
  return super unless react

  props = headers[:props]
  deep_merge = headers[:deep_merge]
  headers = headers.except(:react, :props, :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



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

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