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 ; }, }, ), }, }, { 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 = () => ( ); renderApp = () => ( ); render = () => (this.state.isLoaded ? this.renderApp() : this.renderLoading()); } Expo.registerRootComponent(App);