on 261ea40 help sign in
bridge/src/Bridge.js
79 lines 2.2 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 Router from 'components/Router';
8import Provider from 'store/Provider';
10import { ROUTE_NAMES } from 'lib/routeNames';
11import { ROUTES } from 'lib/router';
12import { NETWORK_TYPES } from 'lib/network';
13import { walletFromMnemonic } from 'lib/wallet';
14import { isDevelopment } from 'lib/flags';
15import useImpliedTicket from 'lib/useImpliedTicket';
16import useHasDisclaimed from 'lib/useHasDisclaimed';
18import 'style/index.scss';
20const INITIAL_NETWORK_TYPE = isDevelopment
21 ? NETWORK_TYPES.LOCAL
22 : NETWORK_TYPES.MAINNET;
24// NB(shrugs): modify these variables to change the default local state.
25const SHOULD_STUB_LOCAL = process.env.REACT_APP_STUB_LOCAL === 'true';
26const IS_STUBBED = isDevelopment && SHOULD_STUB_LOCAL;
28const INITIAL_WALLET = IS_STUBBED
29 ? walletFromMnemonic(
30 process.env.REACT_APP_DEV_MNEMONIC,
31 process.env.REACT_APP_HD_PATH
32 )
33 : undefined;
34const INITIAL_MNEMONIC = IS_STUBBED
35 ? Just(process.env.REACT_APP_DEV_MNEMONIC)
36 : Nothing();
37const INITIAL_POINT_CURSOR = IS_STUBBED ? Just(65792) : Nothing();
39function useInitialRoutes() {
40 const [hasDisclaimed] = useHasDisclaimed();
41 const hasImpliedTicket = !!useImpliedTicket();
43 if (IS_STUBBED) {
44 return [
45 { key: ROUTE_NAMES.LOGIN },
46 { key: ROUTE_NAMES.POINTS },
47 { key: ROUTE_NAMES.POINT },
48 ];
49 }
51 const landingPage = hasImpliedTicket
52 ? ROUTE_NAMES.ACTIVATE
53 : ROUTE_NAMES.LOGIN;
55 const extraRoutes = !hasDisclaimed ? [{ key: ROUTE_NAMES.DISCLAIMER }] : [];
57 return [{ key: landingPage }, ...extraRoutes];
60function Bridge() {
61 const initialRoutes = useInitialRoutes();
63 return (
64 <Provider
65 views={ROUTES}
66 names={ROUTE_NAMES}
67 initialRoutes={initialRoutes}
68 initialNetworkType={INITIAL_NETWORK_TYPE}
69 initialWallet={INITIAL_WALLET}
70 initialMnemonic={INITIAL_MNEMONIC}
71 initialPointCursor={INITIAL_POINT_CURSOR}>
72 <IndigoApp>
73 <Router />
74 </IndigoApp>
75 </Provider>
76 );
79export default process.env.NODE_ENV === 'development' ? hot(Bridge) : Bridge;