import { getContext } from "svelte"; import { createDeliberiClient } from "$lib/api/deliberi"; import { markEntityNotificationsRead } from "$lib/api/notifications"; import type { Auth } from "$lib/auth.svelte"; export const NOTIFICATIONS_KEY = Symbol("notifications"); export interface Notifications { markEntityVisited(entityUri: string): Promise; } export const createNotifications = (auth: Auth, deliberiUrl: string | undefined): Notifications => { const markEntityVisited = async (entityUri: string): Promise => { // yield first so the call lands outside the $effect that invoked it await Promise.resolve(); const agent = auth.agent; if (!agent || !deliberiUrl) return; const deliberi = createDeliberiClient({ deliberiUrl, agent }); await markEntityNotificationsRead(deliberi, entityUri).catch(() => {}); }; return { markEntityVisited }; }; export const getNotifications = () => getContext(NOTIFICATIONS_KEY);