Files
WalletTracker/App.tsx

89 lines
2.1 KiB
TypeScript

import React, { useState, useEffect } from 'react';
import { StatusBar } from 'expo-status-bar';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { StyleSheet, View, Text, ActivityIndicator } from 'react-native';
import { AppNavigator } from './src/navigation/AppNavigator';
export default function App() {
const [error, setError] = useState<string | null>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
// Simuler un chargement pour détecter les erreurs
const timer = setTimeout(() => {
setLoading(false);
}, 1000);
return () => clearTimeout(timer);
}, []);
if (loading) {
return (
<View style={styles.loadingContainer}>
<ActivityIndicator size="large" color="#4A90E2" />
<Text style={styles.loadingText}>Chargement de WalletTracker...</Text>
</View>
);
}
if (error) {
return (
<View style={styles.errorContainer}>
<Text style={styles.errorTitle}> Erreur</Text>
<Text style={styles.errorText}>{error}</Text>
</View>
);
}
try {
return (
<GestureHandlerRootView style={styles.container}>
<AppNavigator />
<StatusBar style="auto" />
</GestureHandlerRootView>
);
} catch (err: any) {
return (
<View style={styles.errorContainer}>
<Text style={styles.errorTitle}> Erreur de chargement</Text>
<Text style={styles.errorText}>{err.message || 'Erreur inconnue'}</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1
},
loadingContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F8F9FA'
},
loadingText: {
marginTop: 16,
fontSize: 16,
color: '#666'
},
errorContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#FFF',
padding: 24
},
errorTitle: {
fontSize: 24,
fontWeight: 'bold',
color: '#FF6B6B',
marginBottom: 16
},
errorText: {
fontSize: 14,
color: '#666',
textAlign: 'center'
}
});