import React, { useEffect, useState } from 'react'; import { StatusBar } from 'expo-status-bar'; import { NavigationContainer } from '@react-navigation/native'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { ActivityIndicator, View, Text, TouchableOpacity } from 'react-native'; import { registerRootComponent } from 'expo'; import * as WebBrowser from 'expo-web-browser'; import { ThemeProvider, useTheme } from './src/services/ThemeContext'; import DatabaseService from './src/services/DatabaseService'; import LoginScreen from './src/screens/LoginScreen'; import RegisterScreen from './src/screens/RegisterScreen'; import OnboardingScreen from './src/screens/OnboardingScreen'; import HomeScreen from './src/screens/HomeScreen'; import SearchScreen from './src/screens/SearchScreen'; import CollectionsScreen from './src/screens/AlbumsScreen'; import SettingsScreen from './src/screens/SettingsScreen'; WebBrowser.maybeCompleteAuthSession(); const Stack = createNativeStackNavigator(); const Tab = createBottomTabNavigator(); function MainTabs({ route }) { const { userId } = route.params || {}; const { theme } = useTheme(); return ( 🖼️, }} /> 🔍, }} /> 📁, }} /> ); } function AppNavigator() { return ( ); } function AppInner() { const { theme } = useTheme(); const [isReady, setIsReady] = useState(false); const [error, setError] = useState(null); useEffect(() => { initializeApp(); }, []); const initializeApp = async () => { try { setError(null); await DatabaseService.initDatabase(); setIsReady(true); } catch (err) { console.error('Database initialization failed:', err); setError(err.message || 'Database initialization failed'); setIsReady(false); } }; if (!isReady && !error) { return ( ); } if (error) { return ( {error} Retry ); } return ( <> ); } function App() { return ( ); } registerRootComponent(App); export default App;