Files
SteelBase/public/js/core/storage.js

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;
}
}