summaryrefslogtreecommitdiff
path: root/frontend/app/app.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/app.js
Initial commit/
Diffstat (limited to 'frontend/app/app.js')
-rw-r--r--frontend/app/app.js92
1 files changed, 92 insertions, 0 deletions
diff --git a/frontend/app/app.js b/frontend/app/app.js
new file mode 100644
index 0000000..f469e15
--- /dev/null
+++ b/frontend/app/app.js
@@ -0,0 +1,92 @@
+import React from 'react';
+import { View } from 'react-native';
+import {
+ AppLoading,
+ Font,
+} from 'expo';
+import {
+ createDrawerNavigator,
+ createStackNavigator,
+} from 'react-navigation';
+import { withRkTheme } from 'react-native-ui-kitten';
+import { AppRoutes } from './config/navigation/routesBuilder';
+import * as Screens from './screens';
+import { bootstrap } from './config/bootstrap';
+import track from './config/analytics';
+import { data } from './data';
+
+bootstrap();
+data.populateData();
+
+const KittenApp = createStackNavigator({
+ First: {
+ screen: Screens.SplashScreen,
+ },
+ Home: {
+ screen: createDrawerNavigator(
+ {
+ ...AppRoutes,
+ },
+ {
+ contentComponent: (props) => {
+ const SideMenu = withRkTheme(Screens.SideMenu);
+ return <SideMenu {...props} />;
+ },
+ },
+ ),
+ },
+}, {
+ headerMode: 'none',
+});
+
+export default class App extends React.Component {
+ state = {
+ isLoaded: false,
+ };
+
+ componentWillMount() {
+ this.loadAssets();
+ }
+
+ onNavigationStateChange = (previous, current) => {
+ const screen = {
+ current: this.getCurrentRouteName(current),
+ previous: this.getCurrentRouteName(previous),
+ };
+ if (screen.previous !== screen.current) {
+ track(screen.current);
+ }
+ };
+
+ getCurrentRouteName = (navigation) => {
+ const route = navigation.routes[navigation.index];
+ return route.routes ? this.getCurrentRouteName(route) : route.routeName;
+ };
+
+ loadAssets = async () => {
+ await Font.loadAsync({
+ fontawesome: require('./assets/fonts/fontawesome.ttf'),
+ icomoon: require('./assets/fonts/icomoon.ttf'),
+ 'Righteous-Regular': require('./assets/fonts/Righteous-Regular.ttf'),
+ 'Roboto-Bold': require('./assets/fonts/Roboto-Bold.ttf'),
+ 'Roboto-Medium': require('./assets/fonts/Roboto-Medium.ttf'),
+ 'Roboto-Regular': require('./assets/fonts/Roboto-Regular.ttf'),
+ 'Roboto-Light': require('./assets/fonts/Roboto-Light.ttf'),
+ });
+ this.setState({ isLoaded: true });
+ };
+
+ renderLoading = () => (
+ <AppLoading />
+ );
+
+ renderApp = () => (
+ <View style={{ flex: 1 }}>
+ <KittenApp onNavigationStateChange={this.onNavigationStateChange} />
+ </View>
+ );
+
+ render = () => (this.state.isLoaded ? this.renderApp() : this.renderLoading());
+}
+
+Expo.registerRootComponent(App);