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 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 AlbumsScreen from './src/screens/AlbumsScreen'; const Stack = createNativeStackNavigator(); const Tab = createBottomTabNavigator(); /** * MainTabs - Bottom tab navigator for logged-in users * Tabs: Home (Library), Search, Albums */ function MainTabs({ route }) { const { userId } = route.params || {}; return ( ( 🖼️ ), }} /> ( 🔍 ), }} /> ( 📁 ), }} /> ); } /** * AppNavigator - Root stack navigator * Handles auth flow (Login/Register/Onboarding) then MainTabs */ function AppNavigator() { return ( ); } export default function App() { 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 ( <> ); }