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.

66 lines
2.2 KiB

  1. import React, { useState, useEffect} from "react";
  2. import { NavigationContainer } from "@react-navigation/native";
  3. import navigationTheme from "./app/navigation/navigationTheme";
  4. import "./app/config/globals.js";
  5. import { AppLoading } from "expo";
  6. import FlashMessage from "react-native-flash-message";
  7. import AppNavigator from "./app/navigation/AppNavigator";
  8. import EventLocationProvider from "./app/context/EventLocationContext";
  9. import CurrentLocationProvider from "./app/context/CurrentLocationContext";
  10. import AuthNavigator from "./app/navigation/AuthNavigator";
  11. import { AuthContext } from "./app/auth/context";
  12. import authStorage from "./app/auth/storage";
  13. import MapDataProvider from "./app/context/MapDataContext";
  14. import { getLocation } from "./app/hooks/useLocation";
  15. import { useFiltering } from "./app/hooks/useFiltering";
  16. import NoInternetConnectionScreen from "./app/screens/NoInternetConnectionScreen";
  17. import NetInfo, { useNetInfo } from "@react-native-community/netinfo";
  18. export default function App() {
  19. const [user, setUser] = useState();
  20. const [isReady, setIsReady] = useState();
  21. const netInfo = useNetInfo();
  22. useEffect(() => {
  23. user && authStorage.setUser(user)
  24. }, [user])
  25. const restoreUser = async () => {
  26. const storageUser = await authStorage.getUser();
  27. if (storageUser) setUser(storageUser);
  28. global.location = { lat: -9.969802, long: -67.816956 }; // await getLocation();
  29. };
  30. if (!isReady && netInfo.isInternetReachable) {
  31. return (
  32. <AppLoading startAsync={restoreUser} onFinish={() => setIsReady(true)} />
  33. );
  34. } else if (netInfo.isInternetReachable) {
  35. global.formsSockets = useFiltering(global.location);
  36. return (
  37. <AuthContext.Provider
  38. value={{
  39. user,
  40. setUser,
  41. }}
  42. >
  43. <CurrentLocationProvider>
  44. <EventLocationProvider>
  45. <MapDataProvider>
  46. <NavigationContainer theme={navigationTheme}>
  47. {user ? <AppNavigator /> : <AuthNavigator />}
  48. <FlashMessage position="top" />
  49. </NavigationContainer>
  50. </MapDataProvider>
  51. </EventLocationProvider>
  52. </CurrentLocationProvider>
  53. </AuthContext.Provider>
  54. );
  55. } else return <NoInternetConnectionScreen />;
  56. }