Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import { browser } from "$app/environment";
const KEY_PREFIX = "tangled.onboarding.";
interface Onboarding { done: string | null; profile: string | null;}
const keyOf = (did: string) => `${KEY_PREFIX}${did}`;
const read = (did: string): Onboarding => { const empty: Onboarding = { done: null, profile: null }; if (!browser) return empty; try { const raw = localStorage.getItem(keyOf(did)); if (!raw) return empty; const parsed: unknown = JSON.parse(raw); // legacy storage stored done timestamp directly as string if (typeof parsed === "string") return { ...empty, done: parsed }; const value = parsed as Partial<Onboarding> | null; return { done: typeof value?.done === "string" ? value.done : null, profile: typeof value?.profile === "string" ? value.profile : null }; } catch { return empty; }};
const write = (did: string, patch: Partial<Onboarding>): void => { if (!browser) return; try { localStorage.setItem(keyOf(did), JSON.stringify({ ...read(did), ...patch })); } catch { // storage access can fail in private browsing; flow is idempotent }};
export const onboardingDone = (did: string): boolean => read(did).done !== null;
export const markOnboardingDone = (did: string): void => { write(did, { done: new Date().toISOString() });};
export const profileImported = (did: string): boolean => read(did).profile !== null;
export const markProfileImported = (did: string): void => { write(did, { profile: new Date().toISOString() });};