mirror of
https://github.com/status-im/MyCrypto.git
synced 2025-01-10 02:55:41 +00:00
616928c085
* Update TODO comments & Remove old TODO comments * Fix undefined bityRate pair * Fix any props in TODO * Add HashRouter * Update publicPath * Revert "Update publicPath" This reverts commit 1ab9068df4d570cf50bc4f2fcd97bd775e9aa768. * Use HashRouter only if site is downloaded * Update conditions for router * Update asset paths & Change publicPath in production * Remove hoist-non-react-statistics * Revert "Remove hoist-non-react-statistics" This reverts commit abc017a3f3ca1a00bebdd9201f0d18770581d8c5. * Add hoist-non-react-statics as dev depencency * Initial tests * Lock hoist-non-react-statics version * Add webpack-include-assets & favicon-webpack plugins * Add env var BUILD_DOWNLOADABLE * Remove dll from prod build * Speed up rebuild times * Change var to const * lodash tree-shacking finagling * Make app aware of its serving location * Fix failing test * Remove downloadable plugin * Merge hash-router and get build working * Add missing package. * Make app aware of its serving location * Revert "Make app aware of its serving location" This reverts commit 8dae3b399e0392272cde25d45443391f6fb6594e. * Revert "Remove downloadable plugin" * Move AutoDLLPlugin to be in dev only * Remove require HtmlWebpackIncludeAssetsPlugin * Remove extra file added * Bring config up to date with webpack 2 rules, add multi threading and proper cache busting * Fix favicons package from freezing build process * Make exclude rules more simple * update freezer webpack config * Move webpack multithreading to full source map dev builds only * update freezer webpack config (#687) * Add HtmlWebpackIncludeAssetsPlugin
115 lines
3.4 KiB
TypeScript
115 lines
3.4 KiB
TypeScript
import React, { Component } from 'react';
|
|
import { Provider } from 'react-redux';
|
|
import { withRouter, Switch, Redirect, HashRouter, Route, BrowserRouter } from 'react-router-dom';
|
|
// Components
|
|
import Contracts from 'containers/Tabs/Contracts';
|
|
import ENS from 'containers/Tabs/ENS';
|
|
import GenerateWallet from 'containers/Tabs/GenerateWallet';
|
|
import Help from 'containers/Tabs/Help';
|
|
import SendTransaction from 'containers/Tabs/SendTransaction';
|
|
import Swap from 'containers/Tabs/Swap';
|
|
import SignAndVerifyMessage from 'containers/Tabs/SignAndVerifyMessage';
|
|
import BroadcastTx from 'containers/Tabs/BroadcastTx';
|
|
import ErrorScreen from 'components/ErrorScreen';
|
|
import { Store } from 'redux';
|
|
import { AppState } from 'reducers';
|
|
|
|
interface Props {
|
|
store: Store<AppState>;
|
|
}
|
|
|
|
interface State {
|
|
error: Error | null;
|
|
}
|
|
|
|
export default class Root extends Component<Props, State> {
|
|
public state = {
|
|
error: null
|
|
};
|
|
|
|
public componentDidCatch(error: Error) {
|
|
this.setState({ error });
|
|
}
|
|
|
|
public render() {
|
|
const { store } = this.props;
|
|
const { error } = this.state;
|
|
|
|
if (error) {
|
|
return <ErrorScreen error={error} />;
|
|
}
|
|
|
|
// key={Math.random()} = hack for HMR from https://github.com/webpack/webpack-dev-server/issues/395
|
|
const routes = (
|
|
<div>
|
|
<Route exact={true} path="/" component={GenerateWallet} />
|
|
<Route path="/generate" component={GenerateWallet}>
|
|
<Route path="keystore" component={GenerateWallet} />
|
|
<Route path="mnemonic" component={GenerateWallet} />
|
|
</Route>
|
|
<Route path="/help" component={Help} />
|
|
<Route path="/swap" component={Swap} />
|
|
<Route path="/account" component={SendTransaction}>
|
|
<Route path="send" component={SendTransaction} />
|
|
<Route path="info" component={SendTransaction} />
|
|
</Route>
|
|
<Route path="/send-transaction" component={SendTransaction} />
|
|
<Route path="/contracts" component={Contracts} />
|
|
<Route path="/ens" component={ENS} />
|
|
<Route path="/sign-and-verify-message" component={SignAndVerifyMessage} />
|
|
<Route path="/pushTx" component={BroadcastTx} />
|
|
<LegacyRoutes />
|
|
</div>
|
|
);
|
|
return (
|
|
<Provider store={store} key={Math.random()}>
|
|
{process.env.BUILD_DOWNLOADABLE ? (
|
|
<HashRouter key={Math.random()}>{routes}</HashRouter>
|
|
) : (
|
|
<BrowserRouter key={Math.random()}>{routes}</BrowserRouter>
|
|
)}
|
|
</Provider>
|
|
);
|
|
}
|
|
}
|
|
|
|
const LegacyRoutes = withRouter(props => {
|
|
const { history } = props;
|
|
const { pathname, hash } = props.location;
|
|
|
|
if (pathname === '/') {
|
|
switch (hash) {
|
|
case '#send-transaction':
|
|
case '#offline-transaction':
|
|
history.push('/send-transaction');
|
|
break;
|
|
case '#generate-wallet':
|
|
history.push('/');
|
|
break;
|
|
case '#swap':
|
|
history.push('/swap');
|
|
break;
|
|
case '#contracts':
|
|
history.push('/contracts');
|
|
break;
|
|
case '#ens':
|
|
history.push('/ens');
|
|
break;
|
|
case '#view-wallet-info':
|
|
history.push('/account/info');
|
|
break;
|
|
case '#check-tx-status':
|
|
history.push('/check-tx-status');
|
|
break;
|
|
}
|
|
}
|
|
|
|
return (
|
|
<Switch>
|
|
<Redirect from="/signmsg.html" to="/sign-and-verify-message" />
|
|
<Redirect from="/helpers.html" to="/helpers" />
|
|
<Redirect from="/send-transaction" to="/account/send" />
|
|
</Switch>
|
|
);
|
|
});
|