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 { 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';
const Stack = createNativeStackNavigator();
const Tab = createBottomTabNavigator();
/**
* MainTabs – Bottom tab navigator for logged-in users
* Tabs: Library, Search, Collections
*/
function MainTabs({ route }) {
const { userId } = route.params || {};
const { theme } = useTheme();
return (
🖼️,
}}
/>
🔍,
}}
/>
📁,
}}
/>
);
}
/**
* AppNavigator – Root stack navigator
*/
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 (
<>
>
);
}
export default function App() {
return (
);
}