const STORAGE_KEY = 'stb:visited-pots'; const MAX_ENTRIES = 20; export interface VisitedPot { slug: string; name: string; currency: string; visitedAt: number; } type StorageLike = Pick; export function readVisitedPots(storage: StorageLike): VisitedPot[] { const raw = storage.getItem(STORAGE_KEY); if (!raw) return []; try { const parsed = JSON.parse(raw); if (!Array.isArray(parsed)) return []; return parsed.filter( (item): item is VisitedPot => typeof item?.slug === 'string' && item.slug.trim() !== '' && typeof item?.name === 'string' && typeof item?.currency === 'string' && typeof item?.visitedAt === 'number', ); } catch { return []; } } export function recordVisitedPot( storage: StorageLike, pot: Omit, ): VisitedPot[] { const rest = readVisitedPots(storage).filter((p) => p.slug !== pot.slug); const updated = [{ ...pot, visitedAt: Date.now() }, ...rest] .sort((a, b) => b.visitedAt - a.visitedAt) .slice(0, MAX_ENTRIES); storage.setItem(STORAGE_KEY, JSON.stringify(updated)); return updated; }