dawarich/app/serializers/api/user_serializer.rb

57 lines
1.7 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
class Api::UserSerializer
def initialize(user)
@user = user
end
def call
data = {
user: {
email: user.email,
theme: user.theme,
created_at: user.created_at,
updated_at: user.updated_at,
settings: settings
}
}
data.merge!(subscription: subscription) unless DawarichSettings.self_hosted?
data
end
private
attr_reader :user
def settings
{
maps: user.safe_settings.maps,
fog_of_war_meters: user.safe_settings.fog_of_war_meters.to_i,
meters_between_routes: user.safe_settings.meters_between_routes.to_i,
preferred_map_layer: user.safe_settings.preferred_map_layer,
speed_colored_routes: user.safe_settings.speed_colored_routes,
points_rendering_mode: user.safe_settings.points_rendering_mode,
minutes_between_routes: user.safe_settings.minutes_between_routes.to_i,
time_threshold_minutes: user.safe_settings.time_threshold_minutes.to_i,
merge_threshold_minutes: user.safe_settings.merge_threshold_minutes.to_i,
live_map_enabled: user.safe_settings.live_map_enabled,
route_opacity: user.safe_settings.route_opacity.to_f,
immich_url: user.safe_settings.immich_url,
photoprism_url: user.safe_settings.photoprism_url,
visits_suggestions_enabled: user.safe_settings.visits_suggestions_enabled?,
speed_color_scale: user.safe_settings.speed_color_scale,
fog_of_war_threshold: user.safe_settings.fog_of_war_threshold,
globe_projection: user.safe_settings.globe_projection
}
end
def subscription
{
status: user.status,
active_until: user.active_until
}
end
end