feat: add media converter app and fix compilation errors
This commit is contained in:
73
lib/media/storage/settings.ts
Normal file
73
lib/media/storage/settings.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
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<UserSettings>): 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user