refactor: corrige duplicações e código morto

- Remove Toast Manager duplicado (core/toast-manager.js)
- Unifica loadPreferences/savePreferences de app.js para state.js
- Unifica adminConfig de app.js para state.js
- Remove código morto (if false block)
- Adiciona checkStorage para validar localStorage
This commit is contained in:
2026-04-03 21:35:36 +00:00
parent 084dc7a155
commit 85c053ff30
3 changed files with 59 additions and 442 deletions

View File

@@ -15,13 +15,34 @@ export const appState = {
};
// User preferences (persisted to localStorage)
export const userPreferences = {
export let userPreferences = {
theme: 'dark',
colorScheme: 'default', // default, blue, green, purple, orange
fontSize: 'medium', // small, medium, large, xlarge
fontFamily: 'default' // default, modern, classic, mono
colorScheme: 'default',
fontSize: 'medium',
fontFamily: 'default'
};
// Load preferences from localStorage
export function loadPreferences() {
try {
const saved = localStorage.getItem('acoCalcPreferences');
if (saved) {
userPreferences = { ...userPreferences, ...JSON.parse(saved) };
}
} catch (e) {
console.warn('Não foi possível carregar preferências:', e);
}
}
// Save preferences to localStorage
export function savePreferences() {
try {
localStorage.setItem('acoCalcPreferences', JSON.stringify(userPreferences));
} catch (e) {
console.warn('Não foi possível salvar preferências:', e);
}
}
// Admin configuration
export const adminConfig = {
appName: 'SteelBase',
@@ -89,3 +110,26 @@ export function updatePreference(key, value) {
export function getPreference(key) {
return userPreferences[key];
}
/**
* Check if localStorage is available and has space
* @returns {object} Storage status
*/
export function checkStorage() {
try {
const testKey = '__storage_test__';
localStorage.setItem(testKey, testKey);
localStorage.removeItem(testKey);
let totalSize = 0;
for (let key in localStorage) {
if (localStorage.hasOwnProperty(key)) {
totalSize += localStorage[key].length * 2;
}
}
return { available: true, usedBytes: totalSize };
} catch (error) {
return { available: false, error: error.message };
}
}