diff --git a/src/hooks/useAuth.tsx b/src/hooks/useAuth.tsx index da3bc3c..e95daa2 100644 --- a/src/hooks/useAuth.tsx +++ b/src/hooks/useAuth.tsx @@ -31,11 +31,14 @@ export function AuthProvider({ children }: { children: ReactNode }) { setUser(session?.user ?? null); if (session?.user) { - checkAdminRole(session.user.id); + // Wait for admin role check before setting loading to false + checkAdminRole(session.user.id).then(() => { + if (mounted) setLoading(false); + }); + } else { + // No session, set loading to false immediately + if (mounted) setLoading(false); } - - // Only set loading to false after initial session is loaded - setLoading(false); }); // Then listen for auth state changes @@ -47,13 +50,15 @@ export function AuthProvider({ children }: { children: ReactNode }) { setUser(session?.user ?? null); if (session?.user) { - checkAdminRole(session.user.id); + // Wait for admin role check + checkAdminRole(session.user.id).then(() => { + if (mounted) setLoading(false); + }); } else { setIsAdmin(false); + // No session, set loading to false immediately + if (mounted) setLoading(false); } - - // Ensure loading is false after auth state changes - setLoading(false); } ); @@ -70,8 +75,9 @@ export function AuthProvider({ children }: { children: ReactNode }) { .eq('user_id', userId) .eq('role', 'admin') .maybeSingle(); - + setIsAdmin(!!data); + return !!data; // Return the result }; const signIn = async (email: string, password: string) => {