25 lines
750 B
TypeScript
25 lines
750 B
TypeScript
const isBrowser = typeof window !== 'undefined';
|
|
|
|
export const safeLocalStorage: Storage | undefined = isBrowser ? window.localStorage : undefined;
|
|
|
|
export function loadFromStorage<T>(key: string, fallback: T): T {
|
|
if (!safeLocalStorage) return fallback;
|
|
try {
|
|
const raw = safeLocalStorage.getItem(key);
|
|
if (!raw) return fallback;
|
|
return JSON.parse(raw) as T;
|
|
} catch (error) {
|
|
console.warn(`Failed to load ${key} from localStorage`, error);
|
|
return fallback;
|
|
}
|
|
}
|
|
|
|
export function saveToStorage<T>(key: string, value: T): void {
|
|
if (!safeLocalStorage) return;
|
|
try {
|
|
safeLocalStorage.setItem(key, JSON.stringify(value));
|
|
} catch (error) {
|
|
console.warn(`Failed to persist ${key} to localStorage`, error);
|
|
}
|
|
}
|