|
|
@ -3,13 +3,13 @@ |
|
|
|
class Api::V1::Push::SubscriptionsController < Api::BaseController |
|
|
|
before_action -> { doorkeeper_authorize! :push } |
|
|
|
before_action :require_user! |
|
|
|
before_action :set_web_push_subscription |
|
|
|
before_action :check_web_push_subscription, only: [:show, :update] |
|
|
|
before_action :set_push_subscription |
|
|
|
before_action :check_push_subscription, only: [:show, :update] |
|
|
|
|
|
|
|
def create |
|
|
|
@web_subscription&.destroy! |
|
|
|
@push_subscription&.destroy! |
|
|
|
|
|
|
|
@web_subscription = ::Web::PushSubscription.create!( |
|
|
|
@push_subscription = Web::PushSubscription.create!( |
|
|
|
endpoint: subscription_params[:endpoint], |
|
|
|
key_p256dh: subscription_params[:keys][:p256dh], |
|
|
|
key_auth: subscription_params[:keys][:auth], |
|
|
@ -18,31 +18,31 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController |
|
|
|
access_token_id: doorkeeper_token.id |
|
|
|
) |
|
|
|
|
|
|
|
render json: @web_subscription, serializer: REST::WebPushSubscriptionSerializer |
|
|
|
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer |
|
|
|
end |
|
|
|
|
|
|
|
def show |
|
|
|
render json: @web_subscription, serializer: REST::WebPushSubscriptionSerializer |
|
|
|
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer |
|
|
|
end |
|
|
|
|
|
|
|
def update |
|
|
|
@web_subscription.update!(data: data_params) |
|
|
|
render json: @web_subscription, serializer: REST::WebPushSubscriptionSerializer |
|
|
|
@push_subscription.update!(data: data_params) |
|
|
|
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer |
|
|
|
end |
|
|
|
|
|
|
|
def destroy |
|
|
|
@web_subscription&.destroy! |
|
|
|
@push_subscription&.destroy! |
|
|
|
render_empty |
|
|
|
end |
|
|
|
|
|
|
|
private |
|
|
|
|
|
|
|
def set_web_push_subscription |
|
|
|
@web_subscription = ::Web::PushSubscription.find_by(access_token_id: doorkeeper_token.id) |
|
|
|
def set_push_subscription |
|
|
|
@push_subscription = Web::PushSubscription.find_by(access_token_id: doorkeeper_token.id) |
|
|
|
end |
|
|
|
|
|
|
|
def check_web_push_subscription |
|
|
|
not_found if @web_subscription.nil? |
|
|
|
def check_push_subscription |
|
|
|
not_found if @push_subscription.nil? |
|
|
|
end |
|
|
|
|
|
|
|
def subscription_params |
|
|
@ -52,6 +52,6 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController |
|
|
|
def data_params |
|
|
|
return {} if params[:data].blank? |
|
|
|
|
|
|
|
params.require(:data).permit(alerts: [:follow, :follow_request, :favourite, :reblog, :mention, :poll, :status]) |
|
|
|
params.require(:data).permit(:policy, alerts: [:follow, :follow_request, :favourite, :reblog, :mention, :poll, :status]) |
|
|
|
end |
|
|
|
end |