Route.tsx 2.7 KB

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