export type Shortcut = { famSlug: string; famName: string; userName: string; // '' for parents (no handle in URL) }; const KEY = 'fam_shortcut'; export function recordShortcut(entry: Shortcut) { if (typeof localStorage === 'undefined') return; localStorage.setItem(KEY, JSON.stringify(entry)); } export function readShortcut(): Shortcut | null { if (typeof localStorage === 'undefined') return null; try { const raw = localStorage.getItem(KEY); if (!raw) return null; const s = JSON.parse(raw) as Shortcut; // Self-heal the old poisoned entry: a write that fell back to // page.params.fam while page.data.fam was null stored the PB id as // both slug and name ({famSlug: id, famName: id}). A real slug is // never identical to the display name AND a 15-char PB id. if (s && s.famSlug === s.famName && /^[a-z0-9]{15}$/.test(s.famSlug || '')) { localStorage.removeItem(KEY); return null; } return s; } catch { return null; } } export function shortcutTarget(s: Shortcut): string { return s.userName ? `/${s.famSlug}/${s.userName}` : `/${s.famSlug}`; }