import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native'; import { useFonts } from 'expo-font'; import { Stack } from 'expo-router'; import * as SplashScreen from 'expo-splash-screen'; import { StatusBar } from 'expo-status-bar'; import { useEffect, useState } from 'react'; import 'react-native-reanimated'; import { ThemedView } from '@/components/theme'; import { Session } from '@supabase/supabase-js'; import { useColorScheme } from '@/hooks/useColorScheme'; import { supabase } from '@/lib/supabase'; import Auth from '@/components/auth/Auth'; import PushNotificationManager from '@/services/PushNotificationManager'; // Prevent the splash screen from auto-hiding before asset loading is complete. SplashScreen.preventAutoHideAsync(); const RootLayout = () => { const scheme = useColorScheme() ?? 'dark'; const [session, setSession] = useState(null); const [loaded] = useFonts({ SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'), }); useEffect(() => { supabase.auth.getSession().then(({ data: { session } }) => { setSession(session); }); supabase.auth.onAuthStateChange((_event, session) => { setSession(session); }); }, []); useEffect(() => { if (loaded) { SplashScreen.hideAsync(); } }, [loaded]); if (!loaded) { return null; } return ( {session && session.user ? ( ) : ( )} ); }; export default RootLayout;