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()
}
// Verificar sesión activa con seguridad
let session = null
try {
const { data } = await supabase.auth.getSession()
session = data.session
} catch (e) {
console.error('SIBU | Auth Check Error:', e)
// OBTENER SESIÓN DE FORMA RÁPIDA:
// En lugar de llamar SIEMPRE a supabase.auth.getSession() (lo cual bloquea la UI varios segundos
// si el token expiró y necesita hacer fetch HTTP), usamos el estado en memoria primero.
const authStore = useAuthStore()
let session = authStore.userSession
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