Sha256: b3854380f1e0d2f8a05d423dfd46cfe1e604a696be1e54d08989ce64ac5ffb81

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

require 'notification-handler'
require 'active_support'

module NotificationPusher
  module NotificationLibrary
    extend ActiveSupport::Concern

    included do
      attr_accessor :pusher
      attr_accessor :pusher_options

      after_create_commit :initialize_pusher

      include NotificationPusher::NotificationLibrary::InstanceMethods
    end

    module InstanceMethods
      def push(name, options = {})
        self.pusher = name
        self.pusher_options = options
        initialize_pusher
      end

      private

      def initialize_pusher
        return if pusher.nil?

        if pusher.is_a?(Array)
          pusher.each do |class_name|
            initiate_push(class_name, pusher_options[class_name.to_sym])
          end
        else
          initiate_push(pusher, pusher_options)
        end
      end

      def initiate_push(class_name, options = {})
        pusher = NotificationPusher::Pusher.find_by_name(class_name).first
        pusher.push(self, options)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
notification-pusher-1.2.6 lib/notification_pusher/notification_library.rb