Route.tsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import React, { useEffect } from 'react';
  2. import { useFonts } from 'expo-font';
  3. import * as SplashScreen from 'expo-splash-screen';
  4. import { createStackNavigator } from '@react-navigation/stack';
  5. import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
  6. import WelcomeScreen from './src/screens/WelcomeScreen';
  7. import LoginScreen from './src/screens/LoginScreen';
  8. import RegisterScreen from './src/screens/RegisterScreen';
  9. import ResetPasswordScreen from './src/screens/ResetPasswordScreen';
  10. import ResetPasswordDeepScreen from './src/screens/ResetPasswordDeepScreen';
  11. import { NAVIGATION_PAGES } from './src/types';
  12. import { storageGet } from './src/storage';
  13. const ScreenStack = createStackNavigator();
  14. const BottomTab = createBottomTabNavigator();
  15. SplashScreen.preventAutoHideAsync();
  16. const Route = () => {
  17. const [fontsLoaded] = useFonts({
  18. 'redhat-900': require('./assets/fonts/RedHatDisplay-Black-900.ttf'),
  19. 'redhat-700': require('./assets/fonts/RedHatDisplay-Bold-700.ttf'),
  20. 'redhat-600': require('./assets/fonts/RedHatDisplay-SemiBold-600.ttf')
  21. });
  22. useEffect(() => {
  23. const hideSplashScreen = async () => {
  24. if (fontsLoaded) {
  25. await SplashScreen.hideAsync();
  26. }
  27. };
  28. hideSplashScreen();
  29. }, [fontsLoaded]);
  30. if (!fontsLoaded) {
  31. return null;
  32. }
  33. const token = storageGet('token');
  34. return (
  35. <ScreenStack.Navigator
  36. screenOptions={{ headerShown: false }}
  37. initialRouteName={NAVIGATION_PAGES.WELCOME}
  38. >
  39. <ScreenStack.Screen name={NAVIGATION_PAGES.WELCOME} component={WelcomeScreen} />
  40. <ScreenStack.Screen name={NAVIGATION_PAGES.LOGIN} component={LoginScreen} />
  41. <ScreenStack.Screen name={NAVIGATION_PAGES.REGISTER} component={RegisterScreen} />
  42. <ScreenStack.Screen name={NAVIGATION_PAGES.RESET_PASSWORD} component={ResetPasswordScreen} />
  43. <ScreenStack.Screen
  44. name={NAVIGATION_PAGES.RESET_PASSWORD_DEEP}
  45. component={ResetPasswordDeepScreen}
  46. />
  47. <ScreenStack.Screen name={NAVIGATION_PAGES.IN_APP}>
  48. {() => (
  49. <BottomTab.Navigator
  50. screenOptions={() => ({
  51. headerShown: false
  52. })}
  53. >
  54. <BottomTab.Screen name={NAVIGATION_PAGES.LOCATION_TAB} component={WelcomeScreen} />
  55. <BottomTab.Screen name={NAVIGATION_PAGES.TRAVELS_TAB} component={WelcomeScreen} />
  56. <BottomTab.Screen name={NAVIGATION_PAGES.PROFILE_TAB} component={WelcomeScreen} />
  57. </BottomTab.Navigator>
  58. )}
  59. </ScreenStack.Screen>
  60. </ScreenStack.Navigator>
  61. );
  62. };
  63. export default Route;