Debug: Add loading and error screens to diagnose startup issues
This commit is contained in:
84
App.tsx
84
App.tsx
@@ -1,20 +1,88 @@
|
||||
import React from 'react';
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { StatusBar } from 'expo-status-bar';
|
||||
import { GestureHandlerRootView } from 'react-native-gesture-handler';
|
||||
import { StyleSheet } from 'react-native';
|
||||
import { StyleSheet, View, Text, ActivityIndicator } from 'react-native';
|
||||
import { AppNavigator } from './src/navigation/AppNavigator';
|
||||
|
||||
export default function App() {
|
||||
return (
|
||||
<GestureHandlerRootView style={styles.container}>
|
||||
<AppNavigator />
|
||||
<StatusBar style="auto" />
|
||||
</GestureHandlerRootView>
|
||||
);
|
||||
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'
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user