import type { PageServerLoad } from './$types';

export const load: PageServerLoad = async (event) => {
	const userId = event.locals.userId ?? null;
	const res = await event.fetch('/api/me/groups', { headers: { 'cache-control': 'no-store' } });
	if (!res.ok) {
		// El gate del layout debería impedir llegar aquí sin sesión; devolvemos vacío como salvaguarda.
		return { groups: [], itemsByGroup: {}, unassignedFirst: false };
	}
	const data = await res.json();
	const groups = Array.isArray(data?.items) ? data.items : [];

	// Leer preferencia de orden para el listado del grupo
	const unassignedFirst =
		(event.url.searchParams.get('unassignedFirst') || '').trim().toLowerCase() === 'true';

	// Recolectar TODAS las tareas abiertas por grupo (sin límite)
	const itemsByGroup: Record<string, any[]> = {};
	for (const g of groups) {
		try {
			const url = `/api/groups/${encodeURIComponent(g.id)}/tasks?limit=0${
				unassignedFirst ? '&unassignedFirst=true' : ''
			}`;
			const r = await event.fetch(url, { headers: { 'cache-control': 'no-store' } });
			if (r.ok) {
				const j = await r.json();
				itemsByGroup[String(g.id)] = Array.isArray(j?.items) ? j.items : [];
			}
		} catch {
			// ignorar errores de un grupo y continuar
		}
	}

	return { groups, itemsByGroup, unassignedFirst, userId };
};
