mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 17:21:38 -05:00
Update safe settings
This commit is contained in:
parent
3cea7db88f
commit
8728a22974
3 changed files with 54 additions and 39 deletions
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue