fix: try-catch en onAuthStateChange — loading nunca queda bloqueado en error
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,8 @@ export class SupabaseAuthService implements AuthService {
|
||||
onAuthStateChange(callback: (user: AuthUser | null) => void): () => void {
|
||||
const { data: { subscription } } = supabase.auth.onAuthStateChange(
|
||||
async (event, session) => {
|
||||
// Siempre llamar callback — incluso si falla algo interno
|
||||
try {
|
||||
if (!session?.user) {
|
||||
callback(null)
|
||||
return
|
||||
@@ -32,7 +34,7 @@ export class SupabaseAuthService implements AuthService {
|
||||
if (event === 'SIGNED_IN') {
|
||||
const email = session.user.email ?? ''
|
||||
const role = email.endsWith('@inquality.com.py') ? 'platform_admin' : 'guest'
|
||||
await supabase.from('users').upsert(
|
||||
const { error: upsertError } = await supabase.from('users').upsert(
|
||||
{
|
||||
id: session.user.id,
|
||||
name: session.user.user_metadata?.full_name ?? email,
|
||||
@@ -41,10 +43,25 @@ export class SupabaseAuthService implements AuthService {
|
||||
},
|
||||
{ onConflict: 'id', ignoreDuplicates: true }
|
||||
)
|
||||
if (upsertError) console.error('Error al crear usuario en DB:', upsertError)
|
||||
}
|
||||
|
||||
const user = await this.buildAuthUser(session.user)
|
||||
callback(user)
|
||||
} catch (err) {
|
||||
console.error('Error en onAuthStateChange:', err)
|
||||
// Garantizar que loading se desbloquea incluso en error
|
||||
if (session?.user) {
|
||||
callback({
|
||||
id: session.user.id,
|
||||
email: session.user.email ?? '',
|
||||
name: session.user.user_metadata?.full_name as string ?? session.user.email ?? '',
|
||||
platformRole: 'guest',
|
||||
})
|
||||
} else {
|
||||
callback(null)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user