From c59e0ba1b096cb128da35c36fc1614d2fc6ba68b Mon Sep 17 00:00:00 2001 From: 230417 <230417@epvc.pt> Date: Fri, 27 Feb 2026 15:29:52 +0000 Subject: [PATCH] feat: Display a loading spinner during initial app load if no user session is stored, otherwise skip the loading state. --- web/src/context/AppContext.tsx | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/web/src/context/AppContext.tsx b/web/src/context/AppContext.tsx index 279fe80..cc611db 100644 --- a/web/src/context/AppContext.tsx +++ b/web/src/context/AppContext.tsx @@ -61,7 +61,16 @@ const initialState: State = { const AppContext = createContext(undefined); export const AppProvider = ({ children }: { children: React.ReactNode }) => { - const [loading, setLoading] = useState(true); + // Se já há sessão guardada, não mostra loading (app aparece de imediato) + const hasStoredUser = Boolean((() => { + try { + const raw = localStorage.getItem('smart-agenda'); + if (!raw) return false; + const parsed = JSON.parse(raw); + return parsed?.user != null; + } catch { return false; } + })()); + const [loading, setLoading] = useState(!hasStoredUser); const [state, setState] = useState(() => { const stored = storage.get | null>('smart-agenda', null); const safeStored = stored && typeof stored === 'object' ? stored : {}; @@ -511,8 +520,13 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => { refreshShops, }; - // Loading Shield evita quebra generalizada se o app renderizar sem BD disponível - if (loading) return null; + // Loading Shield — mostra spinner enquanto autentica pela primeira vez + if (loading) return ( +
+
+ +
+ ); return {children}; };