import PropTypes from 'prop-types'; import React from 'react'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import SplashScreen from 'react-native-splash-screen'; import { appInit } from '../actions'; import AuthRoutes from './routes/AuthRoutes'; import PublicRoutes from './routes/PublicRoutes'; import * as NavigationService from './routes/NavigationService'; @connect( state => ({ login: state.login, app: state.app, background: state.app.background }), dispatch => bindActionCreators({ appInit }, dispatch) ) export default class Routes extends React.Component { static propTypes = { login: PropTypes.object.isRequired, app: PropTypes.object.isRequired, appInit: PropTypes.func.isRequired } componentWillMount() { return !this.props.app.ready && this.props.appInit(); } componentDidMount() { if (this.props.app.ready) { SplashScreen.hide(); } } componentWillReceiveProps(nextProps) { if (nextProps.app.ready && this.props.app.ready !== nextProps.app.ready) { SplashScreen.hide(); } } componentDidUpdate() { NavigationService.setNavigator(this.navigator); } render() { const { login } = this.props; if (this.props.app.starting) { return null; } if (!login.token || login.isRegistering) { return ( this.navigator = nav} />); } return ( this.navigator = nav} />); } }