You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

64 lines
2.3 KiB

import React, { useState } from "react";
import { NavigationContainer } from "@react-navigation/native";
import navigationTheme from "./app/navigation/navigationTheme";
import "./app/config/globals.js";
import openDatabase from "./app/database/database-connection";
import { AppLoading } from "expo";
import initDatabase from "./app/database/database-init";
import FlashMessage from "react-native-flash-message";
import AppNavigator from "./app/navigation/AppNavigator";
import EventLocationProvider from "./app/context/EventLocationContext";
import CurrentLocationProvider from "./app/context/CurrentLocationContext";
import AuthNavigator from "./app/navigation/AuthNavigator";
import { AuthContext } from "./app/auth/context";
import authStorage from "./app/auth/storage";
import MapDataProvider from "./app/context/MapDataContext";
import { getLocation } from "./app/hooks/useLocation";
import { useFiltering } from "./app/hooks/useFiltering";
import NoInternetConnectionScreen from "./app/screens/NoInternetConnectionScreen";
import NetInfo, { useNetInfo } from "@react-native-community/netinfo";
export default function App() {
const [user, setUser] = useState();
const [isReady, setIsReady] = useState();
const netInfo = useNetInfo();
const restoreUser = async () => {
const user = await authStorage.getUser();
global.location = { lat: -23.623, long: -46.5637 }; // await getLocation();
if (user) setUser(user);
};
if (!isReady && netInfo.isInternetReachable) {
return (
<AppLoading startAsync={restoreUser} onFinish={() => setIsReady(true)} />
);
} else if (netInfo.isInternetReachable) {
global.userDataBase = openDatabase();
initDatabase(global.userDataBase);
global.formsSockets = useFiltering(global.location);
return (
<AuthContext.Provider
value={{
user,
setUser,
}}
>
<CurrentLocationProvider>
<EventLocationProvider>
<MapDataProvider>
<NavigationContainer theme={navigationTheme}>
{user ? <AppNavigator /> : <AuthNavigator />}
<FlashMessage position="top" />
</NavigationContainer>
</MapDataProvider>
</EventLocationProvider>
</CurrentLocationProvider>
</AuthContext.Provider>
);
} else return <NoInternetConnectionScreen />;
}