Retrospring/app/controllers/ajax/web_push_controller.rb

40 lines
1.0 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
class Ajax::WebPushController < AjaxController
def key
certificate = Rpush::Webpush::App.find_by(name: "webpush").certificate
@response[:status] = :okay
@response[:success] = true
@response[:key] = JSON.parse(certificate)["public_key"]
end
def subscribe
WebPushSubscription.create!(
user: current_user,
subscription: params[:subscription]
)
@response[:status] = :okay
@response[:success] = true
@response[:message] = t(".subscription_count", count: current_user.web_push_subscriptions.count)
end
def unsubscribe
params.permit(:endpoint)
if params.key?(:endpoint)
current_user.web_push_subscriptions.where("subscription ->> 'endpoint' = ?", params[:endpoint]).destroy_all
else
current_user.web_push_subscriptions.destroy_all
end
count = current_user.web_push_subscriptions.count
@response[:status] = :okay
@response[:success] = true
@response[:message] = t(".subscription_count", count:)
@response[:count] = count
end
end