import { useSyncExternalStore } from "react"; /* * Sessietoken van de ingelogde gebruiker, bewaard in localStorage (blijft ook in * een Capacitor-webview staan tussen app-starts). Componenten volgen het via * useSession(); de API-client leest het via getToken() en wist het bij een 401. */ const KEY = "liefdesbrieven.token"; const listeners = new Set(); let token = null; try { token = localStorage.getItem(KEY); } catch { /* geen storage (privémodus, SSR): dan alleen in het geheugen */ } const notify = () => listeners.forEach((l) => l()); export const getToken = () => token; export function setToken(next) { token = next ?? null; try { if (token) localStorage.setItem(KEY, token); else localStorage.removeItem(KEY); } catch { /* zie boven */ } notify(); } export const clearToken = () => setToken(null); const subscribe = (l) => { listeners.add(l); return () => listeners.delete(l); }; /* Hook: het huidige token (null = uitgelogd); rendert opnieuw bij in-/uitloggen */ export const useSession = () => useSyncExternalStore(subscribe, getToken, () => null);