87 lines
2.2 KiB
JavaScript
87 lines
2.2 KiB
JavaScript
/**
|
|
* LocalStorage Management
|
|
* Handles persistence of user preferences
|
|
*/
|
|
|
|
import { userPreferences } from './state.js';
|
|
|
|
const STORAGE_KEY = 'acoCalcPreferences';
|
|
|
|
/**
|
|
* Load preferences from localStorage
|
|
* @returns {boolean} Success status
|
|
*/
|
|
export function loadPreferences() {
|
|
try {
|
|
const saved = localStorage.getItem(STORAGE_KEY);
|
|
if (saved) {
|
|
const parsed = JSON.parse(saved);
|
|
Object.assign(userPreferences, parsed);
|
|
console.log('✅ Preferências carregadas:', userPreferences);
|
|
return true;
|
|
}
|
|
return false;
|
|
} catch (error) {
|
|
console.warn('⚠️ Não foi possível carregar preferências:', error);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Save preferences to localStorage
|
|
* @returns {boolean} Success status
|
|
*/
|
|
export function savePreferences() {
|
|
try {
|
|
localStorage.setItem(STORAGE_KEY, JSON.stringify(userPreferences));
|
|
console.log('✅ Preferências salvas');
|
|
return true;
|
|
} catch (error) {
|
|
console.warn('⚠️ Não foi possível salvar preferências:', error);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Clear all preferences
|
|
* @returns {boolean} Success status
|
|
*/
|
|
export function clearPreferences() {
|
|
try {
|
|
localStorage.removeItem(STORAGE_KEY);
|
|
console.log('✅ Preferências limpas');
|
|
return true;
|
|
} catch (error) {
|
|
console.warn('⚠️ Não foi possível limpar preferências:', error);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get storage size in bytes
|
|
* @returns {number} Size in bytes
|
|
*/
|
|
export function getStorageSize() {
|
|
try {
|
|
const data = localStorage.getItem(STORAGE_KEY);
|
|
return data ? new Blob([data]).size : 0;
|
|
} catch (error) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if localStorage is available
|
|
* @returns {boolean} Availability status
|
|
*/
|
|
export function isStorageAvailable() {
|
|
try {
|
|
const test = '__storage_test__';
|
|
localStorage.setItem(test, test);
|
|
localStorage.removeItem(test);
|
|
return true;
|
|
} catch (error) {
|
|
return false;
|
|
}
|
|
}
|