discourse/config/initializers/100-push-notifications.rb
Loïc Guitaut 008b700a3f DEV: Upgrade to Rails 7
This patch upgrades Rails to version 7.0.2.4.
2022-04-28 11:51:03 +02:00

34 lines
1014 B
Ruby

# frozen_string_literal: true
return if GlobalSetting.skip_db?
Rails.application.config.to_prepare do
require 'webpush'
def generate_vapid_key?
SiteSetting.vapid_public_key.blank? ||
SiteSetting.vapid_private_key.blank? ||
SiteSetting.vapid_public_key_bytes.blank? ||
SiteSetting.vapid_base_url != Discourse.base_url
end
SiteSetting.vapid_base_url = Discourse.base_url if SiteSetting.vapid_base_url.blank?
if generate_vapid_key?
vapid_key = Webpush.generate_key
SiteSetting.vapid_public_key = vapid_key.public_key
SiteSetting.vapid_private_key = vapid_key.private_key
SiteSetting.vapid_public_key_bytes = Base64.urlsafe_decode64(SiteSetting.vapid_public_key).bytes.join("|")
SiteSetting.vapid_base_url = Discourse.base_url
if ActiveRecord::Base.connection.table_exists?(:push_subscriptions)
PushSubscription.delete_all
end
end
DiscourseEvent.on(:user_logged_out) do |user|
PushNotificationPusher.clear_subscriptions(user)
end
end