Sha256: 15cd529cd8da70b38c934dab11ef90d648e72270d7da1a5f6627cc10d2cf9c31

Contents?: true

Size: 1.22 KB

Versions: 11

Compression:

Stored size: 1.22 KB

Contents

module Notifiable
  class Notification < ActiveRecord::Base
          
    belongs_to :app, :class_name => 'Notifiable::App'    
    validates :app, presence: true
    
    serialize :parameters
    
    has_many :notification_statuses, :class_name => 'Notifiable::NotificationStatus', :dependent => :destroy
    
    def batch 
      begin 
        yield(self)
        update(last_error_message: nil)
      rescue Exception => e
        update(last_error_message: e.message)
      ensure
        close
      end
    end
    
    def add_device_token(d)
      provider = d.provider.to_sym

      unless notifiers[provider]
        clazz = Notifiable.notifier_classes[provider]
        raise "Notifier #{provider} not configured" unless clazz
        notifier = clazz.new(Rails.env, self)
        self.app.configure(provider, notifier)
        @notifiers[provider] = notifier
      end
      
  		notifiers[provider].send_notification(d)
    end
    
    def send_params
      @send_params ||= (self.parameters ? self.parameters : {}).merge({:n_id => self.id})
    end
    
    private
      def notifiers
        @notifiers ||= {}
      end
    
      def close
        notifiers.each_value {|n| n.close}
        @notifiers = nil
      end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
notifiable-rails-0.30.3 lib/notifiable/notification.rb
notifiable-rails-0.30.2 lib/notifiable/notification.rb
notifiable-rails-0.30.1 lib/notifiable/notification.rb
notifiable-rails-0.30.0 lib/notifiable/notification.rb
notifiable-rails-0.29.0 lib/notifiable/notification.rb
notifiable-rails-0.28.1 lib/notifiable/notification.rb
notifiable-rails-0.28.0 lib/notifiable/notification.rb
notifiable-rails-0.27.1 lib/notifiable/notification.rb
notifiable-rails-0.27.0 lib/notifiable/notification.rb
notifiable-rails-0.26.3 lib/notifiable/notification.rb
notifiable-rails-0.26.1 lib/notifiable/notification.rb