/*! React Starter Kit | MIT License | http://www.reactstarterkit.com/ */

import React from 'react';
import Router from 'react-routing/src/Router';
import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';

import http from './core/HttpClient';
import App from './components/App';
import IndexPage from './components/IndexPage';
import NotFoundPage from './components/NotFoundPage';
import ErrorPage from './components/ErrorPage';

import NProgress from 'react-nprogress';

const router = new Router(on => {
  on('*', async (state, next) => {
    if (canUseDOM)
      NProgress.start();
    const component = await next();
    if (canUseDOM)
      NProgress.done();
    return component && <App context={state.context}>{component}</App>;
  });

  on('/', async () => {
    let data = await getDataMock("/api/people");
    return <IndexPage name={data}/>
  });

  on('error', (state, error) => {
    console.log(error);
    console.log(state);
    return state.statusCode === 404 ?
      <App context={state.context} error={error}><NotFoundPage /></App> :
      <App context={state.context} error={error}><ErrorPage /></App>
    }
  );
});

export default router;

var getDataMock = function(url) {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve([{ name: "Jake" }]);
    }, 10000);
  });
};