import { getDeviceId } from '../lib/device'; import { fetchJson } from './apiClient'; import type { EventStats } from './eventApi'; const statsCache = new Map(); export async function fetchEventStats(eventToken: string): Promise { const cached = statsCache.get(eventToken); const response = await fetchJson<{ online_guests?: number; tasks_solved?: number; guest_count?: number; likes_count?: number; latest_photo_at?: string | null; }>( `/api/v1/events/${encodeURIComponent(eventToken)}/stats`, { headers: { 'X-Device-Id': getDeviceId(), }, etag: cached?.etag ?? null, noStore: true, } ); if (response.notModified && cached) { return cached.data; } const stats: EventStats = { onlineGuests: response.data?.online_guests ?? 0, tasksSolved: response.data?.tasks_solved ?? 0, guestCount: response.data?.guest_count ?? 0, likesCount: response.data?.likes_count ?? 0, latestPhotoAt: response.data?.latest_photo_at ?? null, }; statsCache.set(eventToken, { etag: response.etag, data: stats }); return stats; } export function clearStatsCache(eventToken?: string) { if (eventToken) { statsCache.delete(eventToken); return; } statsCache.clear(); }