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}; };