summaryrefslogtreecommitdiff
path: root/frontend/app/config/navigation/routesBuilder.js
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2019-03-11 21:00:02 +0400
committerAndrew <saintruler@gmail.com>2019-03-11 21:00:02 +0400
commit7e7dd5244e8d26485ad7950a89c04c98c4fef83f (patch)
tree810730c4650392080fb87a78d3b527201e89fe4b /frontend/app/config/navigation/routesBuilder.js
Initial commit/
Diffstat (limited to 'frontend/app/config/navigation/routesBuilder.js')
-rw-r--r--frontend/app/config/navigation/routesBuilder.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/frontend/app/config/navigation/routesBuilder.js b/frontend/app/config/navigation/routesBuilder.js
new file mode 100644
index 0000000..157a958
--- /dev/null
+++ b/frontend/app/config/navigation/routesBuilder.js
@@ -0,0 +1,62 @@
+import React from 'react';
+import _ from 'lodash';
+import { createStackNavigator } from 'react-navigation';
+import { withRkTheme } from 'react-native-ui-kitten';
+import { NavBar } from '../../components/index';
+import transition from './transitions';
+import {
+ MainRoutes,
+ MenuRoutes,
+} from './routes';
+
+const main = {};
+const flatRoutes = {};
+
+const routeMapping = (route) => ({
+ screen: withRkTheme(route.screen),
+ title: route.title,
+});
+
+(MenuRoutes).forEach(route => {
+ flatRoutes[route.id] = routeMapping(route);
+ main[route.id] = routeMapping(route);
+ route.children.forEach(nestedRoute => {
+ flatRoutes[nestedRoute.id] = routeMapping(nestedRoute);
+ });
+});
+
+const renderHeader = (navigation, props) => {
+ const ThemedNavigationBar = withRkTheme(NavBar);
+ return (
+ <ThemedNavigationBar navigation={navigation} headerProps={props} />
+ );
+};
+
+const DrawerRoutes = Object.keys(main).reduce((routes, name) => {
+ const rawRoutes = routes;
+ rawRoutes[name] = {
+ name,
+ screen: createStackNavigator(flatRoutes, {
+ initialRouteName: name,
+ headerMode: 'screen',
+ cardStyle: { backgroundColor: 'transparent' },
+ transitionConfig: transition,
+ navigationOptions: ({ navigation }) => ({
+ gesturesEnabled: false,
+ header: (props) => renderHeader(navigation, props),
+ }),
+ }),
+ };
+ return rawRoutes;
+}, {});
+
+export const AppRoutes = DrawerRoutes;
+export const LoginRoutes = _.find(MainRoutes, { id: 'LoginMenu' }).children;
+export const NavigationRoutes = _.find(MainRoutes, { id: 'NavigationMenu' }).children;
+export const SocialRoutes = _.find(MainRoutes, { id: 'SocialMenu' }).children;
+export const ArticleRoutes = _.find(MainRoutes, { id: 'ArticlesMenu' }).children;
+export const MessagingRoutes = _.find(MainRoutes, { id: 'MessagingMenu' }).children;
+export const DashboardRoutes = _.find(MainRoutes, { id: 'DashboardsMenu' }).children;
+export const WalkthroughRoutes = _.find(MainRoutes, { id: 'WalkthroughMenu' }).children;
+export const EcommerceRoutes = _.find(MainRoutes, { id: 'EcommerceMenu' }).children;
+export const OtherRoutes = _.find(MainRoutes, { id: 'OtherMenu' }).children;