Sha256: 3fea0a4aa9179fcb6473dd43f04536d3da7ee4c1bafd160965eedb9a26ab1a74

Contents?: true

Size: 1.53 KB

Versions: 18

Compression:

Stored size: 1.53 KB

Contents

# frozen_string_literal: true

module AcidicJob
  module Extensions
    module Noticed
      extend ActiveSupport::Concern

      class_methods do
        def deliver_acidicly(recipients)
          new.deliver_acidicly(recipients)
        end
      end

      # THIS IS A HACK THAT COPIES AND PASTES KEY PARTS OF THE `Noticed::Base` CODE
      # IN ORDER TO ALLOW US TO TRANSACTIONALLY DELIVER NOTIFICATIONS
      # THIS IS THUS LIABLE TO BREAK WHENEVER THAT GEM IS UPDATED
      def deliver_acidicly(recipients)
        delivery_methods = self.class.delivery_methods.dup

        Array.wrap(recipients).uniq.each do |recipient|
          if (index = delivery_methods.find_index { |m| m[:name] == :database })
            database_delivery_method = delivery_methods.delete_at(index)
            self.record = run_delivery_method(database_delivery_method,
                                              recipient: recipient,
                                              enqueue: false,
                                              record: nil)
          end

          delivery_methods.map do |delivery_method|
            job_class = delivery_method_for(delivery_method[:name], delivery_method[:options])
            args = {
              notification_class: self.class.name,
              options: delivery_method[:options],
              params: params,
              recipient: recipient,
              record: record
            }
            job = job_class.new(args)

            AcidicJob::Run.stage!(job)
          end
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
acidic_job-0.9.0 lib/acidic_job/extensions/noticed.rb
acidic_job-0.8.8 lib/acidic_job/extensions/noticed.rb
acidic_job-0.8.7 lib/acidic_job/extensions/noticed.rb
acidic_job-0.8.5 lib/acidic_job/extensions/noticed.rb
acidic_job-0.8.4 lib/acidic_job/extensions/noticed.rb
acidic_job-0.8.3 lib/acidic_job/extensions/noticed.rb
acidic_job-0.8.2 lib/acidic_job/extensions/noticed.rb
acidic_job-0.8.1 lib/acidic_job/extensions/noticed.rb
acidic_job-0.8.0 lib/acidic_job/extensions/noticed.rb
acidic_job-1.0.0.beta.10 lib/acidic_job/extensions/noticed.rb
acidic_job-1.0.0.beta.9 lib/acidic_job/extensions/noticed.rb
acidic_job-1.0.0.beta.8 lib/acidic_job/extensions/noticed.rb
acidic_job-1.0.0.beta.7 lib/acidic_job/extensions/noticed.rb
acidic_job-1.0.0.beta.6 lib/acidic_job/extensions/noticed.rb
acidic_job-1.0.0.beta.5 lib/acidic_job/extensions/noticed.rb
acidic_job-1.0.0.beta.4 lib/acidic_job/extensions/noticed.rb
acidic_job-1.0.0.beta.3 lib/acidic_job/extensions/noticed.rb
acidic_job-1.0.0.beta.2 lib/acidic_job/extensions/noticed.rb