import { redirect } from '@sveltejs/kit';
import type { PageServerLoad } from './$types';
import { getAuthTokens, authenticatedFetch, clearAuthTokens } from '$lib/server/api';

export const load: PageServerLoad = async ({ cookies, fetch }) => {
	const { accessToken } = getAuthTokens(cookies);
	
	// Si hay token, validar que sea válido antes de redirigir
	if (accessToken) {
		try {
			// Verificar si el token es válido usando authenticatedFetch
			const response = await authenticatedFetch(
				'v1/auth/me',
				{},
				cookies,
				fetch
			);
			
			// Solo redirigir al dashboard si el token es válido
			if (response.ok) {
				throw redirect(303, '/dashboard');
			} else {
				// Token inválido, limpiar cookies y mostrar la página pública
				clearAuthTokens(cookies);
			}
		} catch (error) {
			// Si es un redirect, re-lanzarlo
			if (error && typeof error === 'object' && 'status' in error && 'location' in error) {
				throw error;
			}
			// Para otros errores, limpiar cookies y continuar
			clearAuthTokens(cookies);
		}
	}

	// Si no está autenticado, mostrar la página principal pública
	return {
		isAuthenticated: false
	};
};
