-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.js
More file actions
90 lines (85 loc) · 2.61 KB
/
App.js
File metadata and controls
90 lines (85 loc) · 2.61 KB
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
import React, { useState,forwardRef } from 'react';
import { NavigationContainer} from '@react-navigation/native';
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 TrackListScreen from './src/screens/TrackListScreen'
import TrackDetailScreen from './src/screens/TrackDetailScreen'
import { Provider as AuthProvider} from './src/context/AuthContext'
import { Provider as LocationProvider} from './src/context/LocationContext'
import { Provider as TrackProvider} from './src/context/TrackContext'
import { setNavigator } from './src/navigationRef';
import { navigationRef } from './src/RootNavigation'
import { withNavigation, createSwitchNavigator, createCompatNavigatorFactory } from '@react-navigation/compat';
import ResolveAuthScreen from './src/screens/ResolveAuthScreen'
import {FontAwesome} from 'react-native-vector-icons'
const loginFlow = createCompatNavigatorFactory(createStackNavigator)(
{
Signup: { screen: SignupScreen },
Signin: { screen: SigninScreen },
}
);
const trackListFlow = createCompatNavigatorFactory(createStackNavigator)(
{
TrackList:{ screen: TrackListScreen },
TrackDetail:{ screen: TrackDetailScreen },
},
{
navigationOptions:{
title: 'Tracks',
tabBarIcon:() => (<FontAwesome name="list" size={20} />)
}
}
)
const TrackCreateFlow = createCompatNavigatorFactory(createStackNavigator)(
{
TrackCreate: { screen:TrackCreateScreen}
},
{
navigationOptions:{
title: 'Add Track',
tabBarIcon:() => (<FontAwesome name="plus" size={20} />)
}
}
)
const AccountFlow = createCompatNavigatorFactory(createStackNavigator)(
{
Account: {screen:AccountScreen}
},
{
navigationOptions:{
title: 'Account',
tabBarIcon:() => (<FontAwesome name="gear" size={20} />)
}
}
)
const mainFlow = createCompatNavigatorFactory(createBottomTabNavigator)(
{
trackListFlow,
TrackCreateFlow,
AccountFlow
}
)
const App = createSwitchNavigator(
{
ResolveAuth: {screen: ResolveAuthScreen},
login:loginFlow,
main: mainFlow
}
)
export default () => {
return (
<TrackProvider>
<LocationProvider>
<AuthProvider>
<NavigationContainer ref={navigationRef} >
<App />
</NavigationContainer>
</AuthProvider>
</LocationProvider>
</TrackProvider>
)
}