dawarich/app/javascript/maps_v2/utils/settings_manager.js
2025-11-21 00:10:08 +01:00

79 lines
1.7 KiB
JavaScript

/**
* Settings manager for persisting user preferences
*/
const STORAGE_KEY = 'dawarich-maps-v2-settings'
const DEFAULT_SETTINGS = {
mapStyle: 'positron',
clustering: true,
clusterRadius: 50,
heatmapEnabled: false,
pointsVisible: true,
routesVisible: true,
visitsEnabled: false,
photosEnabled: false,
areasEnabled: false,
tracksEnabled: false,
fogEnabled: false,
scratchEnabled: false
}
export class SettingsManager {
/**
* Get all settings
* @returns {Object} Settings object
*/
static getSettings() {
try {
const stored = localStorage.getItem(STORAGE_KEY)
return stored ? { ...DEFAULT_SETTINGS, ...JSON.parse(stored) } : DEFAULT_SETTINGS
} catch (error) {
console.error('Failed to load settings:', error)
return DEFAULT_SETTINGS
}
}
/**
* Save all settings
* @param {Object} settings - Settings object
*/
static saveSettings(settings) {
try {
localStorage.setItem(STORAGE_KEY, JSON.stringify(settings))
} catch (error) {
console.error('Failed to save settings:', error)
}
}
/**
* Get a specific setting
* @param {string} key - Setting key
* @returns {*} Setting value
*/
static getSetting(key) {
return this.getSettings()[key]
}
/**
* Update a specific setting
* @param {string} key - Setting key
* @param {*} value - New value
*/
static updateSetting(key, value) {
const settings = this.getSettings()
settings[key] = value
this.saveSettings(settings)
}
/**
* Reset to defaults
*/
static resetToDefaults() {
try {
localStorage.removeItem(STORAGE_KEY)
} catch (error) {
console.error('Failed to reset settings:', error)
}
}
}