Update safe settings

This commit is contained in:
Eugene Burmakin 2025-05-19 23:28:33 +02:00
parent 3cea7db88f
commit 8728a22974
3 changed files with 54 additions and 39 deletions

View file

@ -47,7 +47,7 @@ export default class extends BaseController {
this.clearFogRadius = parseInt(this.userSettings.fog_of_war_meters) || 50;
this.fogLinethreshold = parseInt(this.userSettings.fog_of_war_threshold) || 90;
this.routeOpacity = parseFloat(this.userSettings.route_opacity) || 0.6;
this.distanceUnit = this.userSettings.maps.distance_unit || "km";
this.distanceUnit = this.userSettings.distance_unit || "km";
this.pointsRenderingMode = this.userSettings.points_rendering_mode || "raw";
this.liveMapEnabled = this.userSettings.live_map_enabled || false;
this.countryCodesMap = countryCodesMap();

View file

@ -3,12 +3,30 @@
class Users::SafeSettings
attr_reader :settings
def initialize(settings)
@settings = 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' => 0.6,
'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
def config
def default_settings
{
fog_of_war_meters: fog_of_war_meters,
meters_between_routes: meters_between_routes,
@ -31,45 +49,43 @@ class Users::SafeSettings
# rubocop:enable Metrics/MethodLength
def fog_of_war_meters
settings['fog_of_war_meters'] || 50
settings['fog_of_war_meters']
end
def meters_between_routes
settings['meters_between_routes'] || 500
settings['meters_between_routes']
end
def preferred_map_layer
settings['preferred_map_layer'] || 'OpenStreetMap'
settings['preferred_map_layer']
end
def speed_colored_routes
settings['speed_colored_routes'] || false
settings['speed_colored_routes']
end
def points_rendering_mode
settings['points_rendering_mode'] || 'raw'
settings['points_rendering_mode']
end
def minutes_between_routes
settings['minutes_between_routes'] || 30
settings['minutes_between_routes']
end
def time_threshold_minutes
settings['time_threshold_minutes'] || 30
settings['time_threshold_minutes']
end
def merge_threshold_minutes
settings['merge_threshold_minutes'] || 15
settings['merge_threshold_minutes']
end
def live_map_enabled
return settings['live_map_enabled'] if settings.key?('live_map_enabled')
true
settings['live_map_enabled']
end
def route_opacity
settings['route_opacity'] || 0.6
settings['route_opacity']
end
def immich_url
@ -89,10 +105,10 @@ class Users::SafeSettings
end
def maps
settings['maps'] || {}
settings['maps']
end
def distance_unit
settings.dig('maps', 'distance_unit') || 'km'
settings.dig('maps', 'distance_unit')
end
end

View file

@ -1,13 +1,13 @@
# frozen_string_literal: true
RSpec.describe Users::SafeSettings do
describe '#config' do
describe '#default_settings' do
context 'with default values' do
let(:settings) { {} }
let(:safe_settings) { described_class.new(settings) }
it 'returns default configuration' do
expect(safe_settings.config).to eq(
expect(safe_settings.default_settings).to eq(
{
fog_of_war_meters: 50,
meters_between_routes: 500,
@ -23,7 +23,7 @@ RSpec.describe Users::SafeSettings do
immich_api_key: nil,
photoprism_url: nil,
photoprism_api_key: nil,
maps: {},
maps: { "distance_unit" => "km" },
distance_unit: 'km'
}
)
@ -53,24 +53,23 @@ RSpec.describe Users::SafeSettings do
let(:safe_settings) { described_class.new(settings) }
it 'returns custom configuration' do
expect(safe_settings.config).to eq(
expect(safe_settings.settings).to eq(
{
fog_of_war_meters: 100,
meters_between_routes: 1000,
preferred_map_layer: 'Satellite',
speed_colored_routes: true,
points_rendering_mode: 'simplified',
minutes_between_routes: 60,
time_threshold_minutes: 45,
merge_threshold_minutes: 20,
live_map_enabled: false,
route_opacity: 0.8,
immich_url: 'https://immich.example.com',
immich_api_key: 'immich-key',
photoprism_url: 'https://photoprism.example.com',
photoprism_api_key: 'photoprism-key',
maps: { 'name' => 'custom', 'url' => 'https://custom.example.com' },
distance_unit: 'km'
"fog_of_war_meters" => 100,
"meters_between_routes" => 1000,
"preferred_map_layer" => "Satellite",
"speed_colored_routes" => true,
"points_rendering_mode" => "simplified",
"minutes_between_routes" => 60,
"time_threshold_minutes" => 45,
"merge_threshold_minutes" => 20,
"live_map_enabled" => false,
"route_opacity" => 0.8,
"immich_url" => "https://immich.example.com",
"immich_api_key" => "immich-key",
"photoprism_url" => "https://photoprism.example.com",
"photoprism_api_key" => "photoprism-key",
"maps" => { "name" => "custom", "url" => "https://custom.example.com" }
}
)
end
@ -98,7 +97,7 @@ RSpec.describe Users::SafeSettings do
expect(safe_settings.immich_api_key).to be_nil
expect(safe_settings.photoprism_url).to be_nil
expect(safe_settings.photoprism_api_key).to be_nil
expect(safe_settings.maps).to eq({})
expect(safe_settings.maps).to eq({ "distance_unit" => "km" })
end
end