import { Stack, useRouter, useSegments } from 'expo-router'; import { StatusBar } from 'expo-status-bar'; import { useEffect } from 'react'; import { View, ActivityIndicator, StyleSheet } from 'react-native'; import { useAuthStore } from './lib/auth-store'; export const unstable_settings = { initialRouteName: '(tabs)', }; // Auth protection hook function useProtectedRoute() { const { isAuthenticated, isInitialized } = useAuthStore(); const segments = useSegments(); const router = useRouter(); useEffect(() => { if (!isInitialized) { return; } const inAuthGroup = segments[0] === '(auth)'; if (!isAuthenticated && !inAuthGroup) { // Redirect to login if not authenticated and not in auth group router.replace('/(auth)/login'); } else if (isAuthenticated && inAuthGroup) { // Redirect to tabs if authenticated and in auth group router.replace('/(tabs)'); } }, [isAuthenticated, isInitialized, segments]); } import { QueryClientProvider } from '@tanstack/react-query'; import { queryClient } from './lib/query-client'; export default function RootLayout() { const { initialize, isInitialized } = useAuthStore(); // Initialize auth state on app start useEffect(() => { initialize(); }, []); // Use protected route hook useProtectedRoute(); // Show loading screen while initializing if (!isInitialized) { return ( ); } return ( ); } const styles = StyleSheet.create({ loadingContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#FFFFFF', }, });