mirror of
https://github.com/we-promise/sure.git
synced 2026-09-06 07:11:14 +00:00
Add experimental Swift-native Sure Insights app (#3134)
* Add Swift-native Sure app * Fix push subscriptions schema for CI * Address native app review feedback * Address remaining native app review feedback * Use Flutter app logo for native icon * Honor insight notification preferences and locale --------- Co-authored-by: Juan Jose Mata <2v8shcb6pz@privaterelay.appleid.com> Co-authored-by: sure-admin <sure-admin@splashblot.com>
This commit is contained in:
co-authored by
Juan Jose Mata
sure-admin
parent
311f06e404
commit
0aa43de10a
@@ -0,0 +1,57 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::PushSubscriptionsController < Api::V1::BaseController
|
||||
before_action :ensure_write_scope
|
||||
|
||||
def create
|
||||
token = subscription_params[:token].to_s.downcase
|
||||
subscription = current_resource_owner.push_subscriptions.find_or_initialize_by(token: token)
|
||||
subscription.assign_attributes(
|
||||
environment: subscription_params[:environment],
|
||||
platform: subscription_params[:platform],
|
||||
last_registered_at: Time.current
|
||||
)
|
||||
subscription.save!
|
||||
|
||||
render json: serialize(subscription), status: :created
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
render json: { error: "validation_error", message: e.record.errors.full_messages.to_sentence },
|
||||
status: :unprocessable_entity
|
||||
rescue ActiveRecord::RecordNotUnique
|
||||
subscription = current_resource_owner.push_subscriptions.find_by(token: token)
|
||||
if subscription
|
||||
subscription.update!(
|
||||
environment: subscription_params[:environment],
|
||||
platform: subscription_params[:platform],
|
||||
last_registered_at: Time.current
|
||||
)
|
||||
render json: serialize(subscription), status: :created
|
||||
else
|
||||
render json: { error: "validation_error", message: "Device token is already registered" },
|
||||
status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
current_resource_owner.push_subscriptions.find(params[:id]).destroy!
|
||||
head :no_content
|
||||
end
|
||||
|
||||
private
|
||||
def ensure_write_scope
|
||||
authorize_scope!(:write)
|
||||
end
|
||||
|
||||
def subscription_params
|
||||
params.permit(:token, :environment, :platform)
|
||||
end
|
||||
|
||||
def serialize(subscription)
|
||||
{
|
||||
id: subscription.id,
|
||||
environment: subscription.environment,
|
||||
platform: subscription.platform,
|
||||
last_registered_at: subscription.last_registered_at.iso8601
|
||||
}
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user