-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathScreenList.js
107 lines (99 loc) · 2.79 KB
/
ScreenList.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
104
105
106
107
import React, { useContext, useEffect, useState } from "react";
import { createStackNavigator } from "@react-navigation/stack";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import AccountScreen from "./src/screens/AccountScreen";
import SigninScreen from "./src/screens/SigninScreen";
import SignupScreen from "./src/screens/SignupScreen";
import TrackCreateScreen from "./src/screens/TrackCreateScreen";
import TrackDetailScreen from "./src/screens/TrackDetailScreen";
import TrackListScreen from "./src/screens/TrackListScreen";
import { Context as AuthContext } from "./src/contexts/AuthContext";
import { FontAwesome } from "@expo/vector-icons";
const Stack = createStackNavigator();
const Tab = createBottomTabNavigator();
const AuthStackScreens = () => {
return (
<Stack.Navigator>
<Stack.Screen name="Signup" component={SignupScreen} options={{ headerShown: false }} />
<Stack.Screen name="Signin" component={SigninScreen} options={{ headerShown: false }} />
</Stack.Navigator>
);
};
const TrackListStack = () => {
return (
<Stack.Navigator>
<Stack.Screen
name="TrackList"
component={TrackListScreen}
options={{ title: "Tracks", headerTitleAlign: "center" }}
/>
<Stack.Screen
name="TrackDetail"
component={TrackDetailScreen}
options={{ headerTitleAlign: "center" }}
/>
</Stack.Navigator>
);
};
const AppStack = createBottomTabNavigator();
const AppStackScreens = () => {
return (
<AppStack.Navigator
screenOptions={({ route }) => ({
tabBarIcon: ({ focused, color, size }) => {
let iconName;
if (route.name === "TrackCreate") {
iconName = "plus";
} else if (route.name === "TrackListStack") {
iconName = "th-list";
} else if (route.name === "Account") {
iconName = "gear";
}
return <FontAwesome name={iconName} size={20} color={focused ? '#2196F3' : 'black'} />;
},
})}
>
<AppStack.Screen
name="TrackListStack"
component={TrackListStack}
options={{ headerShown: false, title: "Tracks" }}
/>
<AppStack.Screen
name="TrackCreate"
component={TrackCreateScreen}
options={{
title: "Add Track",
headerTitleAlign: "center"
}}
/>
<AppStack.Screen
name="Account"
component={AccountScreen}
options={{
headerTitleAlign: "center"
}}
/>
</AppStack.Navigator>
);
};
function ScreenList() {
const {
tryLocalSignin,
state: { token, isLoading },
} = useContext(AuthContext);
useEffect(() => {
const trySign = async () => {
// console.log("try");
// console.log('token',token)
await tryLocalSignin();
// console.log(isLoading);
};
trySign();
}, []);
if (isLoading) {
return null;
} else {
return <>{token === null ? <AuthStackScreens /> : <AppStackScreens />}</>;
}
}
export default ScreenList;