From 87c674803708c8a6dabf243913d4a93c7b22e50e Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Thu, 5 May 2016 18:25:00 +0100 Subject: [PATCH] Check token earlier, load app faster --- app/components/app.js | 28 ++++++++++++++++++++++++++-- app/components/routes/login.js | 8 -------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/app/components/app.js b/app/components/app.js index 24dd7e4..a04c565 100644 --- a/app/components/app.js +++ b/app/components/app.js @@ -4,6 +4,8 @@ import RouteMaster from './routes/RouteMaster'; import RouteMapper from './navigation/RouteMapper'; import GlobalStyles from '../settings/styles'; import BusyIndicator from 'react-native-busy-indicator'; +import token from '../api/token'; +import { checkToken } from '../api/CircleCI'; require('moment-duration-format'); @@ -27,6 +29,13 @@ const styles = StyleSheet.create({ }); export default class extends React.Component { + constructor() { + super(); + this.state = { + initialRoute: false + }; + } + renderScene(route, nav) { const Component = route.component; const props = route.props || {}; @@ -41,15 +50,30 @@ export default class extends React.Component { } componentWillMount() { - this.initialRoute = RouteMaster.get('LOGIN'); + token.get().then(function (CIToken) { + if (!CIToken) { + this.setState({ + initialRoute: RouteMaster.get('HOME') + }); + return; + } + checkToken(CIToken).then(function (isValid) { + this.setState({ + initialRoute: isValid ? RouteMaster.get('HOME') : RouteMaster.get('LOGIN') + }); + }.bind(this)); + }.bind(this)); } render() { + if (!this.state.initialRoute) { + return null; // Replace with a splash screen? + } return ( { return true; }); // Disable back button - token.get().then(function (CIToken) { - if (!CIToken) { - return; - } - checkToken(CIToken).then(function (isValid) { - this.proceed(); - }.bind(this)); - }.bind(this)); } componentDidMount() {