|
@@ -1,9 +1,11 @@
|
1
|
|
-import {createStore, applyMiddleware, combineReducers} from 'redux';
|
2
|
|
-import {Provider} from 'react-redux';
|
3
|
|
-import {Navigation} from 'react-native-navigation';
|
4
|
|
-import thunk from 'redux-thunk';
|
5
|
|
-import * as reducers from './reducers';
|
6
|
|
-import * as appActions from './reducers/app/actions';
|
|
1
|
+import {createStore, applyMiddleware, combineReducers} from "redux";
|
|
2
|
+import {Provider} from "react-redux";
|
|
3
|
+import {Navigation} from "react-native-navigation";
|
|
4
|
+import thunk from "redux-thunk";
|
|
5
|
+import * as reducers from "./reducers";
|
|
6
|
+import * as appActions from "./reducers/app/actions";
|
|
7
|
+import {registerScreens} from "./screens";
|
|
8
|
+import {Platform} from "react-native";
|
7
|
9
|
|
8
|
10
|
// redux related book keeping
|
9
|
11
|
const createStoreWithMiddleware = applyMiddleware(thunk)(createStore);
|
|
@@ -11,7 +13,6 @@ const reducer = combineReducers(reducers);
|
11
|
13
|
const store = createStoreWithMiddleware(reducer);
|
12
|
14
|
|
13
|
15
|
// screen related book keeping
|
14
|
|
-import {registerScreens} from './screens';
|
15
|
16
|
registerScreens(store, Provider);
|
16
|
17
|
|
17
|
18
|
// notice that this is just a simple class, it's not a React component
|
|
@@ -35,74 +36,77 @@ export default class App {
|
35
|
36
|
startApp(root) {
|
36
|
37
|
switch (root) {
|
37
|
38
|
case 'login':
|
38
|
|
- // Navigation.startSingleScreenApp({
|
39
|
|
- // screen: {
|
40
|
|
- // screen: 'example.LoginScreen',
|
41
|
|
- // title: 'Login',
|
42
|
|
- // navigatorStyle: {}
|
43
|
|
- // },
|
44
|
|
- // passProps: {
|
45
|
|
- // str: 'This is a prop passed in \'startSingleScreenApp()\'!',
|
46
|
|
- // obj: {
|
47
|
|
- // str: 'This is a prop passed in an object!',
|
48
|
|
- // arr: [
|
49
|
|
- // {
|
50
|
|
- // str: 'This is a prop in an object in an array in an object!'
|
51
|
|
- // }
|
52
|
|
- // ],
|
53
|
|
- // arr2: [
|
54
|
|
- // [
|
55
|
|
- // 'array of strings',
|
56
|
|
- // 'with two strings'
|
57
|
|
- // ],
|
58
|
|
- // [
|
59
|
|
- // 1, 2, 3
|
60
|
|
- // ]
|
61
|
|
- // ]
|
62
|
|
- // },
|
63
|
|
- // num: 1234,
|
64
|
|
- // fn: function() {
|
65
|
|
- // return 'Hello from a function!';
|
66
|
|
- // }
|
67
|
|
- // }
|
68
|
|
- // });
|
69
|
|
- Navigation.startSingleScreenApp({
|
70
|
|
- screen: {
|
71
|
|
- title: 'Example',
|
72
|
|
- screen: 'example.TopTabsScreen',
|
73
|
|
- topTabs: [
|
74
|
|
- {
|
75
|
|
- screenId: 'example.FirstTabScreen',
|
76
|
|
- title: 'Tab1',
|
77
|
|
- passProps: {
|
78
|
|
- str: 'This is a prop passed to Tab1',
|
79
|
|
- fn: () => 'Hello from a function passed as passProps!'
|
80
|
|
- }
|
81
|
|
- },
|
82
|
|
- {
|
83
|
|
- screenId: 'example.PushedScreen',
|
84
|
|
- title: 'Tab2',
|
85
|
|
- passProps: {
|
86
|
|
- str: 'This is a prop passed to Tab2'
|
87
|
|
- }
|
|
39
|
+ if (Platform.OS === 'ios') {
|
|
40
|
+ Navigation.startSingleScreenApp({
|
|
41
|
+ screen: {
|
|
42
|
+ screen: 'example.LoginScreen',
|
|
43
|
+ title: 'Login',
|
|
44
|
+ navigatorStyle: {}
|
|
45
|
+ },
|
|
46
|
+ passProps: {
|
|
47
|
+ str: 'This is a prop passed in \'startSingleScreenApp()\'!',
|
|
48
|
+ obj: {
|
|
49
|
+ str: 'This is a prop passed in an object!',
|
|
50
|
+ arr: [
|
|
51
|
+ {
|
|
52
|
+ str: 'This is a prop in an object in an array in an object!'
|
|
53
|
+ }
|
|
54
|
+ ],
|
|
55
|
+ arr2: [
|
|
56
|
+ [
|
|
57
|
+ 'array of strings',
|
|
58
|
+ 'with two strings'
|
|
59
|
+ ],
|
|
60
|
+ [
|
|
61
|
+ 1, 2, 3
|
|
62
|
+ ]
|
|
63
|
+ ]
|
88
|
64
|
},
|
89
|
|
- {
|
90
|
|
- screenId: 'example.ListScreen',
|
91
|
|
- title: 'Tab3',
|
92
|
|
- passProps: {
|
93
|
|
- str: 'This is a prop passed to Tab3'
|
94
|
|
- }
|
|
65
|
+ num: 1234,
|
|
66
|
+ fn: function() {
|
|
67
|
+ return 'Hello from a function!';
|
95
|
68
|
}
|
96
|
|
- ],
|
97
|
|
- navigatorStyle: {}
|
98
|
|
- },
|
99
|
|
- drawer: { // optional, add this if you want a side menu drawer in your app
|
100
|
|
- left: { // optional, define if you want a drawer from the left
|
101
|
|
- screen: 'example.SideMenu' // unique ID registered with Navigation.registerScreen
|
|
69
|
+ }
|
|
70
|
+ });
|
|
71
|
+ } else {
|
|
72
|
+ Navigation.startSingleScreenApp({
|
|
73
|
+ screen: {
|
|
74
|
+ title: 'Example',
|
|
75
|
+ screen: 'example.TopTabsScreen',
|
|
76
|
+ topTabs: [
|
|
77
|
+ {
|
|
78
|
+ screenId: 'example.FirstTabScreen',
|
|
79
|
+ title: 'Tab1',
|
|
80
|
+ passProps: {
|
|
81
|
+ str: 'This is a prop passed to Tab1',
|
|
82
|
+ fn: () => 'Hello from a function passed as passProps!'
|
|
83
|
+ }
|
|
84
|
+ },
|
|
85
|
+ {
|
|
86
|
+ screenId: 'example.PushedScreen',
|
|
87
|
+ title: 'Tab2',
|
|
88
|
+ passProps: {
|
|
89
|
+ str: 'This is a prop passed to Tab2'
|
|
90
|
+ }
|
|
91
|
+ },
|
|
92
|
+ {
|
|
93
|
+ screenId: 'example.ListScreen',
|
|
94
|
+ title: 'Tab3',
|
|
95
|
+ passProps: {
|
|
96
|
+ str: 'This is a prop passed to Tab3'
|
|
97
|
+ }
|
|
98
|
+ }
|
|
99
|
+ ],
|
|
100
|
+ navigatorStyle: {}
|
102
|
101
|
},
|
103
|
|
- disableOpenGesture: false // optional, can the drawer be opened with a swipe instead of button
|
104
|
|
- }
|
105
|
|
- });
|
|
102
|
+ drawer: { // optional, add this if you want a side menu drawer in your app
|
|
103
|
+ left: { // optional, define if you want a drawer from the left
|
|
104
|
+ screen: 'example.SideMenu' // unique ID registered with Navigation.registerScreen
|
|
105
|
+ },
|
|
106
|
+ disableOpenGesture: false // optional, can the drawer be opened with a swipe instead of button
|
|
107
|
+ }
|
|
108
|
+ });
|
|
109
|
+ }
|
106
|
110
|
return;
|
107
|
111
|
case 'after-login':
|
108
|
112
|
Navigation.startTabBasedApp({
|