dawarich/app/services/users/safe_settings.rb
2025-07-03 20:18:18 +02:00

121 lines
2.7 KiB
Ruby

# frozen_string_literal: true
class Users::SafeSettings
attr_reader :settings
DEFAULT_VALUES = {
'fog_of_war_meters' => 50,
'meters_between_routes' => 500,
'preferred_map_layer' => 'OpenStreetMap',
'speed_colored_routes' => false,
'points_rendering_mode' => 'raw',
'minutes_between_routes' => 30,
'time_threshold_minutes' => 30,
'merge_threshold_minutes' => 15,
'live_map_enabled' => true,
'route_opacity' => 60,
'immich_url' => nil,
'immich_api_key' => nil,
'photoprism_url' => nil,
'photoprism_api_key' => nil,
'maps' => { 'distance_unit' => 'km' },
'visits_suggestions_enabled' => 'true'
}.freeze
def initialize(settings = {})
@settings = DEFAULT_VALUES.dup.merge(settings)
end
# rubocop:disable Metrics/MethodLength
def default_settings
{
fog_of_war_meters: fog_of_war_meters,
meters_between_routes: meters_between_routes,
preferred_map_layer: preferred_map_layer,
speed_colored_routes: speed_colored_routes,
points_rendering_mode: points_rendering_mode,
minutes_between_routes: minutes_between_routes,
time_threshold_minutes: time_threshold_minutes,
merge_threshold_minutes: merge_threshold_minutes,
live_map_enabled: live_map_enabled,
route_opacity: route_opacity,
immich_url: immich_url,
immich_api_key: immich_api_key,
photoprism_url: photoprism_url,
photoprism_api_key: photoprism_api_key,
maps: maps,
distance_unit: distance_unit,
visits_suggestions_enabled: visits_suggestions_enabled?
}
end
# rubocop:enable Metrics/MethodLength
def fog_of_war_meters
settings['fog_of_war_meters']
end
def meters_between_routes
settings['meters_between_routes']
end
def preferred_map_layer
settings['preferred_map_layer']
end
def speed_colored_routes
settings['speed_colored_routes']
end
def points_rendering_mode
settings['points_rendering_mode']
end
def minutes_between_routes
settings['minutes_between_routes']
end
def time_threshold_minutes
settings['time_threshold_minutes']
end
def merge_threshold_minutes
settings['merge_threshold_minutes']
end
def live_map_enabled
settings['live_map_enabled']
end
def route_opacity
settings['route_opacity']
end
def immich_url
settings['immich_url']
end
def immich_api_key
settings['immich_api_key']
end
def photoprism_url
settings['photoprism_url']
end
def photoprism_api_key
settings['photoprism_api_key']
end
def maps
settings['maps']
end
def distance_unit
# km or mi
settings.dig('maps', 'distance_unit')
end
def visits_suggestions_enabled?
settings['visits_suggestions_enabled'] == 'true'
end
end