import type { ConversionHistoryItem } from '@/types/conversion'; const HISTORY_KEY = 'convert-ui-history'; const MAX_HISTORY_ITEMS = 10; /** * Get conversion history from localStorage */ export function getHistory(): ConversionHistoryItem[] { if (typeof window === 'undefined') return []; try { const stored = localStorage.getItem(HISTORY_KEY); if (!stored) return []; const history = JSON.parse(stored); return Array.isArray(history) ? history : []; } catch (error) { console.error('Failed to load history:', error); return []; } } /** * Add item to conversion history */ export function addToHistory(item: Omit): void { if (typeof window === 'undefined') return; try { const history = getHistory(); const newItem: ConversionHistoryItem = { ...item, id: Math.random().toString(36).substring(7), timestamp: Date.now(), }; // Add to beginning of array history.unshift(newItem); // Keep only the latest MAX_HISTORY_ITEMS const trimmed = history.slice(0, MAX_HISTORY_ITEMS); localStorage.setItem(HISTORY_KEY, JSON.stringify(trimmed)); // Dispatch custom event for same-page updates window.dispatchEvent(new CustomEvent('conversionHistoryUpdated')); } catch (error) { console.error('Failed to save history:', error); } } /** * Clear all conversion history */ export function clearHistory(): void { if (typeof window === 'undefined') return; try { localStorage.removeItem(HISTORY_KEY); } catch (error) { console.error('Failed to clear history:', error); } } /** * Remove single item from history */ export function removeHistoryItem(id: string): void { if (typeof window === 'undefined') return; try { const history = getHistory(); const filtered = history.filter((item) => item.id !== id); localStorage.setItem(HISTORY_KEY, JSON.stringify(filtered)); } catch (error) { console.error('Failed to remove history item:', error); } } /** * Get history item by ID */ export function getHistoryItem(id: string): ConversionHistoryItem | undefined { const history = getHistory(); return history.find((item) => item.id === id); }