fix: optimizar chequeo de sesion en router para prevenir congelamiento de UI en panel de administracion y otras vistas

This commit is contained in:
2026-03-05 13:08:20 -05:00
parent 1b3dad0fd6
commit 086375969b

View File

@ -177,13 +177,27 @@ router.beforeEach(async (to, _from, next) => {
return next() return next()
} }
// Verificar sesión activa con seguridad // OBTENER SESIÓN DE FORMA RÁPIDA:
let session = null // En lugar de llamar SIEMPRE a supabase.auth.getSession() (lo cual bloquea la UI varios segundos
try { // si el token expiró y necesita hacer fetch HTTP), usamos el estado en memoria primero.
const { data } = await supabase.auth.getSession() const authStore = useAuthStore()
session = data.session let session = authStore.userSession
} catch (e) {
console.error('SIBU | Auth Check Error:', e) if (!session) {
try {
// Protección contra congelamiento: si no hay sesión en memoria, preguntamos a Supabase
// pero le damos un tiempo máximo de 3 segundos para responder y no trabar la app.
const timeoutMs = 3000
const timeout = new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), timeoutMs))
const result = await Promise.race([supabase.auth.getSession(), timeout]) as any
session = result?.data?.session || result?.session
if (session) {
authStore.userSession = session
}
} catch (e) {
console.warn('SIBU | Router auth check timeout/error:', e)
}
} }
// Sin sesión en ruta protegida → login // Sin sesión en ruta protegida → login