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
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 />;
|
|
}
|