dawarich/app/services/users/safe_settings.rb

115 lines
2.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
class Users::SafeSettings
attr_reader :settings
2025-05-19 17:28:33 -04:00
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,
2025-05-22 13:09:43 -04:00
'route_opacity' => 60,
2025-05-19 17:28:33 -04:00
'immich_url' => nil,
'immich_api_key' => nil,
'photoprism_url' => nil,
'photoprism_api_key' => nil,
'maps' => { 'distance_unit' => 'km' }
}.freeze
def initialize(settings = {})
@settings = DEFAULT_VALUES.dup.merge(settings)
end
# rubocop:disable Metrics/MethodLength
2025-05-19 17:28:33 -04:00
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
}
end
# rubocop:enable Metrics/MethodLength
def fog_of_war_meters
2025-05-19 17:28:33 -04:00
settings['fog_of_war_meters']
end
def meters_between_routes
2025-05-19 17:28:33 -04:00
settings['meters_between_routes']
end
def preferred_map_layer
2025-05-19 17:28:33 -04:00
settings['preferred_map_layer']
end
def speed_colored_routes
2025-05-19 17:28:33 -04:00
settings['speed_colored_routes']
end
def points_rendering_mode
2025-05-19 17:28:33 -04:00
settings['points_rendering_mode']
end
def minutes_between_routes
2025-05-19 17:28:33 -04:00
settings['minutes_between_routes']
end
def time_threshold_minutes
2025-05-19 17:28:33 -04:00
settings['time_threshold_minutes']
end
def merge_threshold_minutes
2025-05-19 17:28:33 -04:00
settings['merge_threshold_minutes']
end
def live_map_enabled
2025-05-19 17:28:33 -04:00
settings['live_map_enabled']
end
def route_opacity
2025-05-19 17:28:33 -04:00
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
2025-05-19 17:28:33 -04:00
settings['maps']
end
def distance_unit
2025-05-19 17:28:33 -04:00
settings.dig('maps', 'distance_unit')
end
end