fix(sprint-5/etapa-4g): defer updateUser — evita overlay Radix stuck en DOM
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled

This commit is contained in:
2026-06-20 20:26:47 -03:00
parent a1a8b1c651
commit 985c655f6a

View File

@@ -48,12 +48,15 @@ export function ProfileSheet({ open, onOpenChange }: ProfileSheetProps) {
const savedName = name.trim()
const savedCompany = company.trim() || undefined
// Actualización optimista: aplicar cambios localmente y cerrar el Sheet de inmediato.
// El Sheet nunca queda abierto esperando la respuesta del servidor.
// La modal de Radix bloquea todo el UI mientras está abierta, así que cerramos
// ANTES del fetch para que el usuario pueda seguir trabajando sin demora.
updateUser({ name: savedName, company: savedCompany })
// Cerramos el Sheet PRIMERO para que Radix inicie la animación de cierre en un
// render limpio. updateUser() se difiere al siguiente macrotask para evitar que
// el re-render de AuthContext (ancestor) interfiera con la animación: si ambas
// actualizaciones ocurren en el mismo tick, React las batchea pero Radix puede
// recibir un render intermedio con open=true que deja el overlay en el DOM.
onOpenChange(false)
setTimeout(() => {
updateUser({ name: savedName, company: savedCompany })
}, 0)
// Persistir en Supabase en background — fire & forget.
// Usamos raw fetch (no el cliente Supabase) para evitar contención con processLock.