// app/_layout.tsx import React, { useEffect, useState } from 'react'; import { Platform } from 'react-native'; import { Stack } from 'expo-router'; import { NavigationContainer } from '@react-navigation/native'; import { AppearanceProvider } from '@/contexts/AppearanceContext'; import { WorkoutProvider } from '@/contexts/WorkoutContext'; import { schema } from '@/utils/db/schema'; import { useColorScheme } from '@/hooks/useColorScheme'; import * as ExpoSplashScreen from 'expo-splash-screen'; import SplashScreen from '@/components/SplashScreen'; import { SafeAreaProvider } from 'react-native-safe-area-context'; // Prevent auto-hide of splash screen ExpoSplashScreen.preventAutoHideAsync(); function RootLayoutNav() { const { colors } = useColorScheme(); const [isReady, setIsReady] = React.useState(false); const [showSplash, setShowSplash] = useState(true); useEffect(() => { async function initializeApp() { try { await schema.createTables(); await schema.migrate(); } catch (error) { console.error('Error initializing database:', error); } finally { setIsReady(true); } } initializeApp(); }, []); const onSplashAnimationComplete = async () => { setShowSplash(false); await ExpoSplashScreen.hideAsync(); }; if (!isReady) { return null; } if (showSplash) { return ; } return ( ); } export default function RootLayout() { return ( ); }