fix(sprint-5/etapa-4b): prevenir loop en onAuthStateChange al guardar perfil
- SupabaseAuthService: solo leer company/name de DB en INITIAL_SESSION y SIGNED_IN; ignorar TOKEN_REFRESHED y USER_UPDATED para no sobreescribir ediciones locales - ProfileSheet: useEffect con solo [open] como dep — inicializa el form al abrir el sheet, sin resetearlo en cada cambio del objeto user durante la edición Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -44,6 +44,13 @@ export class SupabaseAuthService implements AuthService {
|
||||
return
|
||||
}
|
||||
|
||||
// Solo procesar eventos genuinos de inicio de sesión.
|
||||
// TOKEN_REFRESHED, USER_UPDATED y similares son eventos internos — ignorarlos
|
||||
// previene sobreescribir ediciones locales (nombre, empresa) con datos re-leídos de DB.
|
||||
if (event !== 'INITIAL_SESSION' && event !== 'SIGNED_IN') {
|
||||
return
|
||||
}
|
||||
|
||||
if (event === 'SIGNED_IN') {
|
||||
// Primer login: upsert del usuario en la tabla users
|
||||
const email = session.user.email ?? ''
|
||||
|
||||
@@ -23,7 +23,10 @@ export function ProfileSheet({ open, onOpenChange }: ProfileSheetProps) {
|
||||
setName(user.name)
|
||||
setCompany(user.company ?? '')
|
||||
}
|
||||
}, [open, user])
|
||||
// Intencional: solo inicializar cuando el sheet se abre, no en cada cambio de `user`
|
||||
// (evita resetear el formulario mientras el usuario está editando).
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [open])
|
||||
|
||||
async function handleSave() {
|
||||
if (!user || !name.trim()) return
|
||||
|
||||
Reference in New Issue
Block a user