Ctrl K
ComunidadGuías…

lib/web_push/notification.rb

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
class WebPush::Notification
  def initialize(title:, body:, url:, badge:, endpoint:, endpoint_ip:, p256dh_key:, auth_key:)
    @title, @body, @url, @badge = title, body, url, badge
    @endpoint, @endpoint_ip, @p256dh_key, @auth_key = endpoint, endpoint_ip, p256dh_key, auth_key
  end

  # Without a checked public IP to connect to, skip the push rather than let the connection look the host up itself.
  def deliver(connection: nil)
    if @endpoint_ip
      WebPush.payload_send \
        message: encoded_message,
        endpoint: @endpoint, endpoint_ip: @endpoint_ip, p256dh: @p256dh_key, auth: @auth_key,
        vapid: vapid_identification,
        connection: connection,
        urgency: "high"
    end
  end

  private
    def vapid_identification
      { subject: "mailto:support@fizzy.do" }.merge \
        Rails.configuration.x.vapid.symbolize_keys
    end

    def encoded_message
      JSON.generate title: @title, options: { body: @body, icon: icon_path, data: { url: @url, path: @url, badge: @badge } }
    end

    def icon_path
      "/apple-touch-icon.png"
    end
end