Sha256: 16eaab7da47da90079007f5533a83255e55fe45c9057f8aee2b9cdcce7b8a843

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

module JeraPush
  module Services
    class SendMessage

      def initialize(*args)
        @type = args.first[:type].to_sym
        @message = args.first[:message]
        @devices = args.first[:devices]
      end

      def call
        return false unless valid?

        message_content = format_hash(@message)
        case @type
        when :broadcast
          # Topicos não estão funcionando.
          # JeraPush::Message.send_broadcast(content: message_content)
        when :specific
          target_devices = JeraPush::Device.where(id: @devices.uniq.map(&:to_i))
          result = JeraPush::Services::SendToDevicesService.new(devices: target_devices, 
            title: message_content[:title], 
            body: message_content[:body], 
            data: message_content
          ).call
          result
        end
      end

      def valid?
        valid = @message.present? && @type.present?
        @type.to_sym == :broadcast ? valid : valid && @devices.present?
      end

      def format_hash(messages = [])
        return false if messages.blank?
        messages.collect do |obj|
          hash = { obj[:key].to_sym => obj[:value] }
          hash.delete_if { |key, value| key.blank? || value.blank? }
        end.reduce(:merge)
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jera_push-2.0.0 lib/jera_push/services/send_message.rb