-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathApp.js
108 lines (72 loc) · 2.85 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import React from "react";
import { createAppContainer, createSwitchNavigator } from "react-navigation";
import { createStackNavigator } from "react-navigation-stack";
import { createBottomTabNavigator } from "react-navigation-tabs";
import { AntDesign } from '@expo/vector-icons';
//all screens importing
import WelcomeScreen from "./src/screens/WelcomeScreen";
import SigninScreen from "./src/screens/SigninScreen";
import SignupScreen from "./src/screens/SignupScreen";
import HomeScreen from "./src/screens/HomeScreen";
import HomeDetailsScreen from "./src/screens/HomeDetailsScreen";
import NFCScreen from "./src/screens/NFCScreen";
import AccountScreen from "./src/screens/AccountScreen";
//importing NavigationActions reference
import { navigate, setNavigator } from "./src/helpers/navigation";
//Importing fonts hook
import { useFonts } from "@use-expo/font";
import { useEffect } from "react/cjs/react.production.min";
//Importing AppLoading component if something doesn't load correctly
import AppLoading from "expo-app-loading";
//importing API keys which we are going to use to initialize out firebase
const loginFlow = createStackNavigator({
Welcome: WelcomeScreen,
Signin: SigninScreen,
Signup: SignupScreen
});
const homeFlow = createStackNavigator({
Home: HomeScreen,
HomeDetails: HomeDetailsScreen
});
homeFlow.navigationOptions = {
title: "Home",
tabBarIcon: <AntDesign name="home" size={30} color="black" />
}
const bottomTabFlow = createBottomTabNavigator({
NFC: NFCScreen,
homeFlow: homeFlow,
Account: AccountScreen
}, {
initialRouteName: "homeFlow",
tabBarOptions: {
activeTintColor: "#5EAF26",
inactiveTintColor: "black"
}
});
//navigator component which will have all navigators nested
const navigator = createSwitchNavigator({
loginFlow: loginFlow,
bottomTabFlow: bottomTabFlow
});
const App = createAppContainer(navigator);
//object containing all fonts
const customFonts = {
TrendaExtraLight: require("./assets/fonts/TrendaFonts/Trenda-ExtraLight.otf"),
TrendaLightIt: require("./assets/fonts/TrendaFonts/Trenda-LightIt.otf"),
TrendaLight: require("./assets/fonts/TrendaFonts/Trenda-Light.otf"),
TrendaRegular: require("./assets/fonts/TrendaFonts/Trenda-Regular.otf"),
TrendaSemiboldIt: require("./assets/fonts/TrendaFonts/Trenda-SemiboldIt.otf"),
TrendaSemibold: require("./assets/fonts/TrendaFonts/Trenda-Semibold.otf"),
MoonBold: require("./assets/fonts/MoonFonts/Moon-Bold.otf"),
MoonLight: require("./assets/fonts/MoonFonts/Moon-Light.otf")
}
export default () => {
const [isLoaded] = useFonts(customFonts);
//if fonts are not loaded it will show loading icon
if (!isLoaded)
return <AppLoading />
return (
//this sets the navigator variable to the global navigator from where we have access to all screens
<App ref={(navigator) => { setNavigator(navigator) }} />
);
}