-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
65 lines (55 loc) · 2.12 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// App.js
import React, { useEffect } from 'react'; // Import useEffect for side effects
// Import react Navigation
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { initializeApp } from "firebase/app";
import { getStorage } from "firebase/storage";
import { getFirestore, enableNetwork, disableNetwork } from "firebase/firestore"; // Import Firestore functions
import { useNetInfo } from "@react-native-community/netinfo"; // Import useNetInfo for network detection
import { Alert } from 'react-native'; // Import Alert
// Import the screens
import Start from './components/Start';
import Chat from './components/Chat';
// Create the navigator
const Stack = createNativeStackNavigator();
const App = () => {
// Firebase configuration
const firebaseConfig = {
apiKey: "AIzaSyCtAWPqWSTfT9jONiKqMbuC8QpXnDZViE4",
authDomain: "chatapp-a8044.firebaseapp.com",
projectId: "chatapp-a8044",
storageBucket: "chatapp-a8044.appspot.com",
messagingSenderId: "183337411955",
appId: "1:183337411955:web:ba1bab39d58b03f8b39106",
measurementId: "G-6CL7E8CT84"
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
//Initialize Firestore and Storage
const db = getFirestore();
const storage = getStorage(app);
const netInfo = useNetInfo(); // Use useNetInfo to monitor network status
useEffect(() => {
// Only proceed if isConnected is not null
if (netInfo.isConnected !== null) {
if (netInfo.isConnected) {
enableNetwork(db);
} else {
Alert.alert("Connection Lost!"); // Show alert only when isConnected is explicitly false
disableNetwork(db);
}
}
}, [netInfo.isConnected]);
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Start">
<Stack.Screen name="Start" component={Start} />
<Stack.Screen name="Chat">
{props => <Chat {...props} db={db} storage={storage} isConnected={netInfo.isConnected} />}
</Stack.Screen>
</Stack.Navigator>
</NavigationContainer>
);
};
export default App;