import { createClient } from '@supabase/supabase-js'

export const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL
export const SUPABASE_ANON_KEY = import.meta.env.VITE_SUPABASE_ANON_KEY

if (!SUPABASE_URL || !SUPABASE_ANON_KEY) {
    const errorMsg = 'SIB | ERROR: Credenciales de Supabase no encontradas en las variables de entorno (.env).'
    console.error(errorMsg, {
        url: !!SUPABASE_URL,
        key: !!SUPABASE_ANON_KEY
    })
    // En desarrollo, mostramos una alerta para que el usuario sepa qué falta inmediatamente
    if (import.meta.env.DEV && typeof window !== 'undefined') {
        alert(errorMsg)
    }
}

// SIB | Hybrid Storage: Maneja persistencia según la voluntad del usuario
const authStorage = {
    getItem: (key: string) => localStorage.getItem(key) || sessionStorage.getItem(key),
    setItem: (key: string, val: string) => {
        // Si ya existe en sessionStorage, seguimos guardando allí (no persistente)
        if (sessionStorage.getItem(key)) {
            sessionStorage.setItem(key, val)
        } else {
            // Por defecto guardamos en localStorage (persistente)
            localStorage.setItem(key, val)
        }
    },
    removeItem: (key: string) => {
        localStorage.removeItem(key)
        sessionStorage.removeItem(key)
    }
}

export const supabase = createClient(SUPABASE_URL || '', SUPABASE_ANON_KEY || '', {
    auth: {
        storage: authStorage as any,
        autoRefreshToken: true,
        persistSession: true
    }
})
