// 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 (
);
}