export interface UserSettings { // Quality preferences defaultQualityPreset: 'high-quality' | 'balanced' | 'small-file' | 'web-optimized'; // Behavior preferences autoStartConversion: boolean; showConversionHistory: boolean; clearHistoryOnReset: boolean; // Default formats (optional) defaultVideoFormat?: string; defaultAudioFormat?: string; defaultImageFormat?: string; } const SETTINGS_KEY = 'convert-ui-settings'; const DEFAULT_SETTINGS: UserSettings = { defaultQualityPreset: 'balanced', autoStartConversion: false, showConversionHistory: true, clearHistoryOnReset: false, }; /** * Get user settings from localStorage */ export function getSettings(): UserSettings { if (typeof window === 'undefined') return DEFAULT_SETTINGS; try { const stored = localStorage.getItem(SETTINGS_KEY); if (!stored) return DEFAULT_SETTINGS; const settings = JSON.parse(stored); return { ...DEFAULT_SETTINGS, ...settings }; } catch (error) { console.error('Failed to load settings:', error); return DEFAULT_SETTINGS; } } /** * Save user settings to localStorage */ export function saveSettings(settings: Partial): void { if (typeof window === 'undefined') return; try { const current = getSettings(); const updated = { ...current, ...settings }; localStorage.setItem(SETTINGS_KEY, JSON.stringify(updated)); // Dispatch custom event for settings updates window.dispatchEvent(new CustomEvent('settingsUpdated', { detail: updated })); } catch (error) { console.error('Failed to save settings:', error); } } /** * Reset settings to defaults */ export function resetSettings(): void { if (typeof window === 'undefined') return; try { localStorage.setItem(SETTINGS_KEY, JSON.stringify(DEFAULT_SETTINGS)); window.dispatchEvent(new CustomEvent('settingsUpdated', { detail: DEFAULT_SETTINGS })); } catch (error) { console.error('Failed to reset settings:', error); } }