module ActionMailerPixel::DSL::TrackingPixel

Public Instance Methods

open_tracking_pixel(recipient: nil, campaign: nil) click to toggle source
# File lib/action_mailer_pixel/dsl/tracking_pixel.rb, line 22
def open_tracking_pixel(recipient: nil, campaign: nil)
  define_method :open_pixel_configuration do
    @open_pixel_configuration ||= Configuration.new(
      recipient.nil? ? send(:open_pixel_recipient) : recipient,
      campaign.nil? ? send(:open_pixel_campaign) : campaign
    )
  end

  define_method :open_pixel_recipient do
    -> do
      begin
        @user ||
          params[:user] ||
          ActionMailerPixel.recipient_class.find_by(email: message.to.first)
      rescue NameError
        nil
      end
    end
  end

  define_method :open_pixel_campaign do
    -> do
      begin
        @campaign || params[:campaign]
      rescue NameError
        nil
      end
    end
  end

  define_method :append_open_tracking_pixel do
    interceptor = ActionMailerPixel::Interceptor.new self
    interceptor.setup_pixel
  end

  after_action :append_open_tracking_pixel
end