# 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