Sha256: d7db38089086825976d5cca95ab6320bb01a75730f3fb970da83bfa25a606bec

Contents?: true

Size: 1.04 KB

Versions: 19

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module Emailbutler
  module Helpers
    private

    def resend_message_with_mailer(message)
      params = message.params

      mailer = message.mailer.constantize
      mailer = mailer.with(serialize(params['mailer_params'])) if params['mailer_params'].present?
      mailer = mailer.method(message.action)
      mailer = params['action_params'] ? mailer.call(*serialize(params['action_params'])) : mailer.call
      mailer.deliver_now
    end

    def serialize(value, reverse=true)
      return value.map { |element| serialize(element, reverse) } if value.is_a?(Array)
      return value.transform_values { |element| serialize(element, reverse) } if value.is_a?(Hash)

      reverse ? deserialize_value(value) : serialize_value(value)
    end

    def serialize_value(value)
      return value.to_global_id.to_s if value.respond_to?(:to_global_id)

      value
    end

    def deserialize_value(value)
      return GlobalID::Locator.locate(value) if value.is_a?(String) && value.starts_with?('gid://')

      value
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
emailbutler-0.7.4 lib/emailbutler/helpers.rb
emailbutler-0.7.3 lib/emailbutler/helpers.rb
emailbutler-0.7.2 lib/emailbutler/helpers.rb
emailbutler-0.7.1 lib/emailbutler/helpers.rb
emailbutler-0.7.0 lib/emailbutler/helpers.rb
emailbutler-0.6.1 lib/emailbutler/helpers.rb
emailbutler-0.6.0 lib/emailbutler/helpers.rb
emailbutler-0.5.9 lib/emailbutler/helpers.rb
emailbutler-0.5.8 lib/emailbutler/helpers.rb
emailbutler-0.5.7 lib/emailbutler/helpers.rb
emailbutler-0.5.6 lib/emailbutler/helpers.rb
emailbutler-0.5.5 lib/emailbutler/helpers.rb
emailbutler-0.5.4 lib/emailbutler/helpers.rb
emailbutler-0.5.3 lib/emailbutler/helpers.rb
emailbutler-0.5.2 lib/emailbutler/helpers.rb
emailbutler-0.5.1 lib/emailbutler/helpers.rb
emailbutler-0.5.0 lib/emailbutler/helpers.rb
emailbutler-0.4.0 lib/emailbutler/helpers.rb
emailbutler-0.3.0 lib/emailbutler/helpers.rb