From 80ed6b26755ed4986b7f4b665ade9d1fc9f3a9e3 Mon Sep 17 00:00:00 2001 From: 230417 <230417@epvc.pt> Date: Tue, 3 Mar 2026 14:36:38 +0000 Subject: [PATCH] =?UTF-8?q?corre=C3=A7=C3=A3o=20login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/context/AppContext.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/web/src/context/AppContext.tsx b/web/src/context/AppContext.tsx index a5e342d..451762e 100644 --- a/web/src/context/AppContext.tsx +++ b/web/src/context/AppContext.tsx @@ -197,19 +197,21 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => { // Usa onAuthStateChange que dispara INITIAL_SESSION automaticamente // Evita duplicação com getSession() separado - const { data: sub } = supabase.auth.onAuthStateChange(async (event, session) => { + const { data: sub } = supabase.auth.onAuthStateChange((event, session) => { if (!mounted) return; + // Liberta o loading imediatamente ao primeiro evento de auth + // para não bloquear a app enquanto os dados carregam + setLoading(false); + if (session?.user) { - await applyProfile(session.user.id, session.user.email); - if (mounted) await refreshShops(); + applyProfile(session.user.id, session.user.email) + .then(() => { if (mounted) refreshShops(); }) + .catch(console.error); } else { clearUser(); - if (mounted) await refreshShops(); + refreshShops().catch(console.error); } - - // Liberta o loading após o primeiro evento - if (mounted) setLoading(false); }); // Fallback: se o onAuthStateChange não disparar em 5s, liberta o loading