# frozen_string_literal: true module AbstractNotifier module AsyncAdapters class ActiveJob class DeliveryJob < ::ActiveJob::Base def perform(notifier_class, *__rest__, &__block__) AbstractNotifier::NotificationDelivery.new(notifier_class.constantize, *__rest__, &__block__).notify_now end; respond_to?(:ruby2_keywords, true) && (ruby2_keywords :perform) end DEFAULT_QUEUE = "notifiers" attr_reader :job, :queue def initialize(queue: DEFAULT_QUEUE, job: DeliveryJob) @job = job @queue = queue end def enqueue(...) job.set(queue: queue).perform_later(...) end; respond_to?(:ruby2_keywords, true) && (ruby2_keywords :enqueue) def enqueue_delivery(delivery, **__kwrest__) job.set(queue: queue, **__kwrest__).perform_later( delivery.notifier_class.name, delivery.action_name, **delivery.delivery_params ) end end end end AbstractNotifier.async_adapter ||= :active_job