Een dating-app op basis van brieven, niet van gezichten!
Deze repository wordt als momentopname gepubliceerd: een clone bevat de volledige inhoud, maar geen commitgeschiedenis.
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);