on b44eced help sign in
bridge/src/Bridge.js
88 lines 2.5 kB history raw
1import React from 'react';
2import { hot } from 'react-hot-loader/root';
3import { Just, Nothing } from 'folktale/maybe';
4import { IndigoApp } from 'indigo-react';
6import Header from 'components/Header';
8import Router from 'components/Router';
10import Provider from 'store/Provider';
12import { ROUTE_NAMES } from 'lib/routeNames';
13import { ROUTES } from 'lib/router';
14import { NETWORK_TYPES } from 'lib/network';
15import { walletFromMnemonic } from 'lib/wallet';
16import { isDevelopment } from 'lib/flags';
17import useImpliedTicket from 'lib/useImpliedTicket';
18import useHasDisclaimed from 'lib/useHasDisclaimed';
20import 'style/index.scss';
21import WithErrorBoundary from 'components/WithErrorBoundary';
22import GlobalErrorBoundary from 'components/GlobalErrorBoundary';
24const INITIAL_NETWORK_TYPE = isDevelopment
25 ? NETWORK_TYPES.LOCAL
26 : NETWORK_TYPES.MAINNET;
28// NB(shrugs): modify these variables to change the default local state.
29const SHOULD_STUB_LOCAL = process.env.REACT_APP_STUB_LOCAL === 'true';
30const IS_STUBBED = isDevelopment && SHOULD_STUB_LOCAL;
32const INITIAL_WALLET = IS_STUBBED
33 ? walletFromMnemonic(
34 process.env.REACT_APP_DEV_MNEMONIC,
35 process.env.REACT_APP_HD_PATH
36 )
37 : undefined;
38const INITIAL_MNEMONIC = IS_STUBBED
39 ? Just(process.env.REACT_APP_DEV_MNEMONIC)
40 : Nothing();
41const INITIAL_POINT_CURSOR = IS_STUBBED ? Just(65792) : Nothing();
43function useInitialRoutes() {
44 const [hasDisclaimed] = useHasDisclaimed();
45 const hasImpliedTicket = !!useImpliedTicket();
47 if (IS_STUBBED) {
48 return [
49 { key: ROUTE_NAMES.LOGIN },
50 { key: ROUTE_NAMES.POINTS },
51 { key: ROUTE_NAMES.POINT },
52 ];
53 }
55 if (hasImpliedTicket) {
56 return [{ key: ROUTE_NAMES.ACTIVATE }];
57 }
59 if (!hasDisclaimed) {
60 return [{ key: ROUTE_NAMES.DISCLAIMER, data: { next: ROUTE_NAMES.LOGIN } }];
61 }
63 return [{ key: ROUTE_NAMES.LOGIN }];
66function Bridge() {
67 const initialRoutes = useInitialRoutes();
69 return (
70 <WithErrorBoundary render={error => <GlobalErrorBoundary error={error} />}>
71 <Provider
72 views={ROUTES}
73 names={ROUTE_NAMES}
74 initialRoutes={initialRoutes}
75 initialNetworkType={INITIAL_NETWORK_TYPE}
76 initialWallet={INITIAL_WALLET}
77 initialMnemonic={INITIAL_MNEMONIC}
78 initialPointCursor={INITIAL_POINT_CURSOR}>
79 <Header />
80 <IndigoApp>
81 <Router />
82 </IndigoApp>
83 </Provider>
84 </WithErrorBoundary>
85 );
88export default process.env.NODE_ENV === 'development' ? hot(Bridge) : Bridge;