Sha256: a3c9098bb71b372e78f0456cdf38e4d10c3053024bd7c391da727c7fdff95ff5

Contents?: true

Size: 1.33 KB

Versions: 3

Compression:

Stored size: 1.33 KB

Contents

module Heya
  class CampaignMailer < ApplicationMailer
    layout "heya/campaign_mailer"

    def build
      user = params.fetch(:user)
      step = params.fetch(:step)

      campaign_name = step.campaign_name.underscore
      step_name = step.name.underscore

      from = step.params.fetch("from")
      reply_to = step.params.fetch("reply_to", nil)

      subject = step.params.fetch("subject") {
        I18n.t("#{campaign_name}.#{step_name}.subject", **attributes_for(user))
      }
      subject = subject.call(user) if subject.respond_to?(:call)

      instance_variable_set(:"@#{user.model_name.element}", user)
      instance_variable_set(:@campaign_name, campaign_name)

      mail(
        from: from,
        reply_to: reply_to,
        to: user.email,
        subject: subject,
        template_path: "heya/campaign_mailer/#{campaign_name}",
        template_name: step_name
      )
    end

    protected

    def attributes_for(user)
      if user.respond_to?(:heya_attributes)
        user.heya_attributes.symbolize_keys
      else
        {}
      end
    end

    def _prefixes
      @_prefixes_with_campaign_path ||= begin
        if params.is_a?(Hash) && (campaign_name = params[:step]&.campaign&.name&.underscore)
          super | ["heya/campaign_mailer/#{campaign_name}"]
        else
          super
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
heya-0.5.2 app/mailers/heya/campaign_mailer.rb
heya-0.5.1 app/mailers/heya/campaign_mailer.rb
heya-0.5.0 app/mailers/heya/campaign_mailer.rb