From ffbd8e2c2f8eeb8adb740d65baec554fd8889c17 Mon Sep 17 00:00:00 2001
From: Niranjana Binoy <43930900+NiranjanaBinoy@users.noreply.github.com>
Date: Wed, 28 Apr 2021 14:02:01 -0400
Subject: [PATCH 01/77] Handling gas price fetch failure (#10767)
---
app/_locales/en/messages.json | 6 ++
...onfirm-page-container-content.component.js | 5 ++
.../confirm-page-container-warning/index.scss | 1 -
.../confirm-page-container.component.js | 3 +
.../gas-modal-page-container.component.js | 30 ++++---
ui/app/ducks/gas/gas-duck.test.js | 61 ++++++++-------
ui/app/ducks/gas/gas.duck.js | 78 ++++++++++++-------
ui/app/helpers/constants/error-keys.js | 3 +
.../pages/confirm-approve/confirm-approve.js | 12 ++-
.../confirm-transaction-base.component.js | 61 +++++++++++++--
.../confirm-transaction-base.container.js | 14 +++-
.../send-content/send-content.component.js | 33 ++++++--
.../send-content/send-content.container.js | 4 +
.../send-gas-row/send-gas-row.component.js | 21 ++++-
.../send-gas-row/send-gas-row.container.js | 6 ++
.../send/send-footer/send-footer.component.js | 5 +-
.../send-footer/send-footer.component.test.js | 1 +
.../send/send-footer/send-footer.container.js | 2 +
ui/app/selectors/custom-gas.js | 22 +++++-
19 files changed, 274 insertions(+), 94 deletions(-)
diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json
index 66dcee019..ce9df0e5c 100644
--- a/app/_locales/en/messages.json
+++ b/app/_locales/en/messages.json
@@ -684,6 +684,9 @@
"estimatedProcessingTimes": {
"message": "Estimated Processing Times"
},
+ "ethGasPriceFetchWarning": {
+ "message": "Backup gas price is provided as the main gas estimation service is unavailable right now."
+ },
"eth_accounts": {
"message": "View the addresses of your permitted accounts (required)",
"description": "The description for the `eth_accounts` permission"
@@ -780,6 +783,9 @@
"gasPriceExtremelyLow": {
"message": "Gas Price Extremely Low"
},
+ "gasPriceFetchFailed": {
+ "message": "Gas price estimation failed due to network error."
+ },
"gasPriceInfoTooltipContent": {
"message": "Gas price specifies the amount of Ether you are willing to pay for each unit of gas."
},
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js b/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js
index 9009f9feb..e47bfaf78 100644
--- a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js
+++ b/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js
@@ -22,6 +22,7 @@ export default class ConfirmPageContainerContent extends Component {
titleComponent: PropTypes.node,
warning: PropTypes.string,
origin: PropTypes.string.isRequired,
+ ethGasPriceWarning: PropTypes.string,
// Footer
onCancelAll: PropTypes.func,
onCancel: PropTypes.func,
@@ -81,11 +82,15 @@ export default class ConfirmPageContainerContent extends Component {
unapprovedTxCount,
rejectNText,
origin,
+ ethGasPriceWarning,
} = this.props;
return (
{warning &&
}
+ {ethGasPriceWarning && (
+
+ )}
)}
{contentComponent && (
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js b/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js
index f57cce92d..ea59b7882 100644
--- a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js
+++ b/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js
@@ -123,19 +123,25 @@ export default class GasModalPageContainer extends Component {
infoRowProps: { newTotalFiat, newTotalEth, sendAmount, transactionFee },
} = this.props;
- let tabsToRender = [
- {
- name: this.context.t('basic'),
- content: this.renderBasicTabContent(gasPriceButtonGroupProps),
- },
- {
- name: this.context.t('advanced'),
- content: this.renderAdvancedTabContent(),
- },
- ];
-
+ let tabsToRender;
if (hideBasic) {
- tabsToRender = tabsToRender.slice(1);
+ tabsToRender = [
+ {
+ name: this.context.t('advanced'),
+ content: this.renderAdvancedTabContent(),
+ },
+ ];
+ } else {
+ tabsToRender = [
+ {
+ name: this.context.t('basic'),
+ content: this.renderBasicTabContent(gasPriceButtonGroupProps),
+ },
+ {
+ name: this.context.t('advanced'),
+ content: this.renderAdvancedTabContent(),
+ },
+ ];
}
return (
diff --git a/ui/app/ducks/gas/gas-duck.test.js b/ui/app/ducks/gas/gas-duck.test.js
index eab7a74b6..e4e51beab 100644
--- a/ui/app/ducks/gas/gas-duck.test.js
+++ b/ui/app/ducks/gas/gas-duck.test.js
@@ -3,8 +3,7 @@ import sinon from 'sinon';
import BN from 'bn.js';
import GasReducer, {
- basicGasEstimatesLoadingStarted,
- basicGasEstimatesLoadingFinished,
+ setBasicEstimateStatus,
setBasicGasEstimateData,
setCustomGasPrice,
setCustomGasLimit,
@@ -49,7 +48,8 @@ describe('Gas Duck', () => {
fast: null,
safeLow: null,
},
- basicEstimateIsLoading: true,
+ basicEstimateStatus: 'LOADING',
+ estimateSource: '',
};
const providerState = {
@@ -61,14 +61,12 @@ describe('Gas Duck', () => {
type: 'mainnet',
};
- const BASIC_GAS_ESTIMATE_LOADING_FINISHED =
- 'metamask/gas/BASIC_GAS_ESTIMATE_LOADING_FINISHED';
- const BASIC_GAS_ESTIMATE_LOADING_STARTED =
- 'metamask/gas/BASIC_GAS_ESTIMATE_LOADING_STARTED';
+ const BASIC_GAS_ESTIMATE_STATUS = 'metamask/gas/BASIC_GAS_ESTIMATE_STATUS';
const SET_BASIC_GAS_ESTIMATE_DATA =
'metamask/gas/SET_BASIC_GAS_ESTIMATE_DATA';
const SET_CUSTOM_GAS_LIMIT = 'metamask/gas/SET_CUSTOM_GAS_LIMIT';
const SET_CUSTOM_GAS_PRICE = 'metamask/gas/SET_CUSTOM_GAS_PRICE';
+ const SET_ESTIMATE_SOURCE = 'metamask/gas/SET_ESTIMATE_SOURCE';
describe('GasReducer()', () => {
it('should initialize state', () => {
@@ -84,16 +82,13 @@ describe('Gas Duck', () => {
).toStrictEqual(mockState);
});
- it('should set basicEstimateIsLoading to true when receiving a BASIC_GAS_ESTIMATE_LOADING_STARTED action', () => {
+ it('should set basicEstimateStatus to LOADING when receiving a BASIC_GAS_ESTIMATE_STATUS action with value LOADING', () => {
expect(
- GasReducer(mockState, { type: BASIC_GAS_ESTIMATE_LOADING_STARTED }),
- ).toStrictEqual({ basicEstimateIsLoading: true, ...mockState });
- });
-
- it('should set basicEstimateIsLoading to false when receiving a BASIC_GAS_ESTIMATE_LOADING_FINISHED action', () => {
- expect(
- GasReducer(mockState, { type: BASIC_GAS_ESTIMATE_LOADING_FINISHED }),
- ).toStrictEqual({ basicEstimateIsLoading: false, ...mockState });
+ GasReducer(mockState, {
+ type: BASIC_GAS_ESTIMATE_STATUS,
+ value: 'LOADING',
+ }),
+ ).toStrictEqual({ basicEstimateStatus: 'LOADING', ...mockState });
});
it('should set basicEstimates when receiving a SET_BASIC_GAS_ESTIMATE_DATA action', () => {
@@ -127,18 +122,17 @@ describe('Gas Duck', () => {
});
});
- describe('basicGasEstimatesLoadingStarted', () => {
- it('should create the correct action', () => {
- expect(basicGasEstimatesLoadingStarted()).toStrictEqual({
- type: BASIC_GAS_ESTIMATE_LOADING_STARTED,
- });
- });
+ it('should set estimateSource to Metaswaps when receiving a SET_ESTIMATE_SOURCE action with value Metaswaps', () => {
+ expect(
+ GasReducer(mockState, { type: SET_ESTIMATE_SOURCE, value: 'Metaswaps' }),
+ ).toStrictEqual({ estimateSource: 'Metaswaps', ...mockState });
});
- describe('basicGasEstimatesLoadingFinished', () => {
+ describe('basicEstimateStatus', () => {
it('should create the correct action', () => {
- expect(basicGasEstimatesLoadingFinished()).toStrictEqual({
- type: BASIC_GAS_ESTIMATE_LOADING_FINISHED,
+ expect(setBasicEstimateStatus('LOADING')).toStrictEqual({
+ type: BASIC_GAS_ESTIMATE_STATUS,
+ value: 'LOADING',
});
});
});
@@ -158,7 +152,7 @@ describe('Gas Duck', () => {
}));
expect(mockDistpatch.getCall(0).args).toStrictEqual([
- { type: BASIC_GAS_ESTIMATE_LOADING_STARTED },
+ { type: 'metamask/gas/BASIC_GAS_ESTIMATE_STATUS', value: 'LOADING' },
]);
expect(
@@ -168,7 +162,11 @@ describe('Gas Duck', () => {
).toStrictEqual(true);
expect(mockDistpatch.getCall(2).args).toStrictEqual([
- { type: BASIC_GAS_ESTIMATE_LOADING_FINISHED },
+ { type: 'metamask/gas/SET_ESTIMATE_SOURCE', value: 'MetaSwaps' },
+ ]);
+
+ expect(mockDistpatch.getCall(4).args).toStrictEqual([
+ { type: 'metamask/gas/BASIC_GAS_ESTIMATE_STATUS', value: 'READY' },
]);
});
@@ -190,9 +188,12 @@ describe('Gas Duck', () => {
metamask: { provider: { ...providerStateForTestNetwork } },
}));
expect(mockDistpatch.getCall(0).args).toStrictEqual([
- { type: BASIC_GAS_ESTIMATE_LOADING_STARTED },
+ { type: 'metamask/gas/BASIC_GAS_ESTIMATE_STATUS', value: 'LOADING' },
]);
expect(mockDistpatch.getCall(1).args).toStrictEqual([
+ { type: 'metamask/gas/SET_ESTIMATE_SOURCE', value: 'eth_gasprice' },
+ ]);
+ expect(mockDistpatch.getCall(2).args).toStrictEqual([
{
type: SET_BASIC_GAS_ESTIMATE_DATA,
value: {
@@ -200,8 +201,8 @@ describe('Gas Duck', () => {
},
},
]);
- expect(mockDistpatch.getCall(2).args).toStrictEqual([
- { type: BASIC_GAS_ESTIMATE_LOADING_FINISHED },
+ expect(mockDistpatch.getCall(3).args).toStrictEqual([
+ { type: 'metamask/gas/BASIC_GAS_ESTIMATE_STATUS', value: 'READY' },
]);
});
});
diff --git a/ui/app/ducks/gas/gas.duck.js b/ui/app/ducks/gas/gas.duck.js
index 5785b2cf3..48d277443 100644
--- a/ui/app/ducks/gas/gas.duck.js
+++ b/ui/app/ducks/gas/gas.duck.js
@@ -8,15 +8,24 @@ import {
import { getIsMainnet, getCurrentChainId } from '../../selectors';
import fetchWithCache from '../../helpers/utils/fetch-with-cache';
+const BASIC_ESTIMATE_STATES = {
+ LOADING: 'LOADING',
+ FAILED: 'FAILED',
+ READY: 'READY',
+};
+
+const GAS_SOURCE = {
+ METASWAPS: 'MetaSwaps',
+ ETHGASPRICE: 'eth_gasprice',
+};
+
// Actions
-const BASIC_GAS_ESTIMATE_LOADING_FINISHED =
- 'metamask/gas/BASIC_GAS_ESTIMATE_LOADING_FINISHED';
-const BASIC_GAS_ESTIMATE_LOADING_STARTED =
- 'metamask/gas/BASIC_GAS_ESTIMATE_LOADING_STARTED';
+const BASIC_GAS_ESTIMATE_STATUS = 'metamask/gas/BASIC_GAS_ESTIMATE_STATUS';
const RESET_CUSTOM_DATA = 'metamask/gas/RESET_CUSTOM_DATA';
const SET_BASIC_GAS_ESTIMATE_DATA = 'metamask/gas/SET_BASIC_GAS_ESTIMATE_DATA';
const SET_CUSTOM_GAS_LIMIT = 'metamask/gas/SET_CUSTOM_GAS_LIMIT';
const SET_CUSTOM_GAS_PRICE = 'metamask/gas/SET_CUSTOM_GAS_PRICE';
+const SET_ESTIMATE_SOURCE = 'metamask/gas/SET_ESTIMATE_SOURCE';
const initState = {
customData: {
@@ -28,21 +37,17 @@ const initState = {
average: null,
fast: null,
},
- basicEstimateIsLoading: true,
+ basicEstimateStatus: BASIC_ESTIMATE_STATES.LOADING,
+ estimateSource: '',
};
// Reducer
export default function reducer(state = initState, action) {
switch (action.type) {
- case BASIC_GAS_ESTIMATE_LOADING_STARTED:
+ case BASIC_GAS_ESTIMATE_STATUS:
return {
...state,
- basicEstimateIsLoading: true,
- };
- case BASIC_GAS_ESTIMATE_LOADING_FINISHED:
- return {
- ...state,
- basicEstimateIsLoading: false,
+ basicEstimateStatus: action.value,
};
case SET_BASIC_GAS_ESTIMATE_DATA:
return {
@@ -70,21 +75,21 @@ export default function reducer(state = initState, action) {
...state,
customData: cloneDeep(initState.customData),
};
+ case SET_ESTIMATE_SOURCE:
+ return {
+ ...state,
+ estimateSource: action.value,
+ };
default:
return state;
}
}
// Action Creators
-export function basicGasEstimatesLoadingStarted() {
+export function setBasicEstimateStatus(status) {
return {
- type: BASIC_GAS_ESTIMATE_LOADING_STARTED,
- };
-}
-
-export function basicGasEstimatesLoadingFinished() {
- return {
- type: BASIC_GAS_ESTIMATE_LOADING_FINISHED,
+ type: BASIC_GAS_ESTIMATE_STATUS,
+ value: status,
};
}
@@ -106,18 +111,26 @@ export function fetchBasicGasEstimates() {
return async (dispatch, getState) => {
const isMainnet = getIsMainnet(getState());
- dispatch(basicGasEstimatesLoadingStarted());
-
+ dispatch(setBasicEstimateStatus(BASIC_ESTIMATE_STATES.LOADING));
let basicEstimates;
- if (isMainnet || process.env.IN_TEST) {
- basicEstimates = await fetchExternalBasicGasEstimates();
- } else {
- basicEstimates = await fetchEthGasPriceEstimates(getState());
+ try {
+ dispatch(setEstimateSource(GAS_SOURCE.ETHGASPRICE));
+ if (isMainnet || process.env.IN_TEST) {
+ try {
+ basicEstimates = await fetchExternalBasicGasEstimates();
+ dispatch(setEstimateSource(GAS_SOURCE.METASWAPS));
+ } catch (error) {
+ basicEstimates = await fetchEthGasPriceEstimates(getState());
+ }
+ } else {
+ basicEstimates = await fetchEthGasPriceEstimates(getState());
+ }
+ dispatch(setBasicGasEstimateData(basicEstimates));
+ dispatch(setBasicEstimateStatus(BASIC_ESTIMATE_STATES.READY));
+ } catch (error) {
+ dispatch(setBasicEstimateStatus(BASIC_ESTIMATE_STATES.FAILED));
}
- dispatch(setBasicGasEstimateData(basicEstimates));
- dispatch(basicGasEstimatesLoadingFinished());
-
return basicEstimates;
};
}
@@ -211,3 +224,10 @@ export function setCustomGasLimit(newLimit) {
export function resetCustomData() {
return { type: RESET_CUSTOM_DATA };
}
+
+export function setEstimateSource(estimateSource) {
+ return {
+ type: SET_ESTIMATE_SOURCE,
+ value: estimateSource,
+ };
+}
diff --git a/ui/app/helpers/constants/error-keys.js b/ui/app/helpers/constants/error-keys.js
index 85ce13d7d..bfdb7474f 100644
--- a/ui/app/helpers/constants/error-keys.js
+++ b/ui/app/helpers/constants/error-keys.js
@@ -2,3 +2,6 @@ export const INSUFFICIENT_FUNDS_ERROR_KEY = 'insufficientFunds';
export const GAS_LIMIT_TOO_LOW_ERROR_KEY = 'gasLimitTooLow';
export const TRANSACTION_ERROR_KEY = 'transactionError';
export const TRANSACTION_NO_CONTRACT_ERROR_KEY = 'transactionErrorNoContract';
+export const ETH_GAS_PRICE_FETCH_WARNING_KEY = 'ethGasPriceFetchWarning';
+export const GAS_PRICE_FETCH_FAILURE_ERROR_KEY = 'gasPriceFetchFailed';
+export const GAS_PRICE_EXCESSIVE_ERROR_KEY = 'gasPriceExcessive';
diff --git a/ui/app/pages/confirm-approve/confirm-approve.js b/ui/app/pages/confirm-approve/confirm-approve.js
index 9eb51bd2a..b7731e752 100644
--- a/ui/app/pages/confirm-approve/confirm-approve.js
+++ b/ui/app/pages/confirm-approve/confirm-approve.js
@@ -24,6 +24,8 @@ import {
getUseNonceField,
getCustomNonceValue,
getNextSuggestedNonce,
+ getNoGasPriceFetched,
+ getIsEthGasPriceFetched,
} from '../../selectors';
import { currentNetworkTxListSelector } from '../../selectors/transactions';
import Loading from '../../components/ui/loading-screen';
@@ -116,6 +118,8 @@ export default function ConfirmApprove() {
const customData = customPermissionAmount
? getCustomTxParamsData(data, { customPermissionAmount, decimals })
: null;
+ const isEthGasPrice = useSelector(getIsEthGasPriceFetched);
+ const noGasPrice = useSelector(getNoGasPriceFetched);
return tokenSymbol === undefined ? (
@@ -136,7 +140,13 @@ export default function ConfirmApprove() {
tokenSymbol={tokenSymbol}
tokenBalance={tokenBalance}
showCustomizeGasModal={() =>
- dispatch(showModal({ name: 'CUSTOMIZE_GAS', txData }))
+ dispatch(
+ showModal({
+ name: 'CUSTOMIZE_GAS',
+ txData,
+ hideBasic: isEthGasPrice || noGasPrice,
+ }),
+ )
}
showEditApprovalPermissionModal={({
/* eslint-disable no-shadow */
diff --git a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js b/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js
index e20efc83a..0192ad75f 100644
--- a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js
+++ b/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js
@@ -11,6 +11,8 @@ import {
INSUFFICIENT_FUNDS_ERROR_KEY,
TRANSACTION_ERROR_KEY,
GAS_LIMIT_TOO_LOW_ERROR_KEY,
+ ETH_GAS_PRICE_FETCH_WARNING_KEY,
+ GAS_PRICE_FETCH_FAILURE_ERROR_KEY,
} from '../../helpers/constants/error-keys';
import UserPreferencedCurrencyDisplay from '../../components/app/user-preferenced-currency-display';
import { PRIMARY, SECONDARY } from '../../helpers/constants/common';
@@ -23,6 +25,7 @@ import {
} from '../../../../shared/constants/transaction';
import { getTransactionTypeTitle } from '../../helpers/utils/transactions.util';
import { toBuffer } from '../../../../shared/modules/buffer-utils';
+import ErrorMessage from '../../components/ui/error-message';
export default class ConfirmTransactionBase extends Component {
static contextTypes = {
@@ -95,12 +98,15 @@ export default class ConfirmTransactionBase extends Component {
showAccountInHeader: PropTypes.bool,
mostRecentOverviewPage: PropTypes.string.isRequired,
isMainnet: PropTypes.bool,
+ isEthGasPrice: PropTypes.bool,
+ noGasPrice: PropTypes.bool,
};
state = {
submitting: false,
submitError: null,
submitWarning: '',
+ ethGasPriceWarning: '',
};
componentDidUpdate(prevProps) {
@@ -114,12 +120,14 @@ export default class ConfirmTransactionBase extends Component {
customNonceValue,
toAddress,
tryReverseResolveAddress,
+ isEthGasPrice,
} = this.props;
const {
customNonceValue: prevCustomNonceValue,
nextNonce: prevNextNonce,
toAddress: prevToAddress,
transactionStatus: prevTxStatus,
+ isEthGasPrice: prevIsEthGasPrice,
} = prevProps;
const statusUpdated = transactionStatus !== prevTxStatus;
const txDroppedOrConfirmed =
@@ -151,6 +159,18 @@ export default class ConfirmTransactionBase extends Component {
if (toAddress && toAddress !== prevToAddress) {
tryReverseResolveAddress(toAddress);
}
+
+ if (isEthGasPrice !== prevIsEthGasPrice) {
+ if (isEthGasPrice) {
+ this.setState({
+ ethGasPriceWarning: this.context.t(ETH_GAS_PRICE_FETCH_WARNING_KEY),
+ });
+ } else {
+ this.setState({
+ ethGasPriceWarning: '',
+ });
+ }
+ }
}
getErrorKey() {
@@ -160,6 +180,7 @@ export default class ConfirmTransactionBase extends Component {
hexTransactionFee,
txData: { simulationFails, txParams: { value: amount } = {} } = {},
customGas,
+ noGasPrice,
} = this.props;
const insufficientBalance =
@@ -194,6 +215,13 @@ export default class ConfirmTransactionBase extends Component {
};
}
+ if (noGasPrice) {
+ return {
+ valid: false,
+ errorKey: GAS_PRICE_FETCH_FAILURE_ERROR_KEY,
+ };
+ }
+
return {
valid: true,
};
@@ -243,9 +271,12 @@ export default class ConfirmTransactionBase extends Component {
nextNonce,
getNextNonce,
isMainnet,
+ isEthGasPrice,
+ noGasPrice,
} = this.props;
const notMainnetOrTest = !(isMainnet || process.env.IN_TEST);
+ const gasPriceFetchFailure = isEthGasPrice || noGasPrice;
return (
@@ -253,18 +284,26 @@ export default class ConfirmTransactionBase extends Component {
this.handleEditGas()
}
- onHeaderClick={notMainnetOrTest ? null : () => this.handleEditGas()}
secondaryText={
hideFiatConversion
? this.context.t('noConversionRateAvailable')
: ''
}
/>
- {advancedInlineGasShown || notMainnetOrTest ? (
+ {advancedInlineGasShown ||
+ notMainnetOrTest ||
+ gasPriceFetchFailure ? (
updateGasAndCalculate({ ...customGas, gasPrice: newGasPrice })
@@ -279,6 +318,11 @@ export default class ConfirmTransactionBase extends Component {
isSpeedUp={false}
/>
) : null}
+ {noGasPrice ? (
+
+
+
+ ) : null}
this.handleSubmit()}
hideSenderToRecipient={hideSenderToRecipient}
origin={txData.origin}
+ ethGasPriceWarning={ethGasPriceWarning}
/>
);
}
diff --git a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.container.js b/ui/app/pages/confirm-transaction-base/confirm-transaction-base.container.js
index 48d4ff814..a9a87219d 100644
--- a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.container.js
+++ b/ui/app/pages/confirm-transaction-base/confirm-transaction-base.container.js
@@ -33,6 +33,8 @@ import {
getUseNonceField,
getPreferences,
transactionFeeSelector,
+ getNoGasPriceFetched,
+ getIsEthGasPriceFetched,
} from '../../selectors';
import { getMostRecentOverviewPage } from '../../ducks/history/history';
import { transactionMatchesNetwork } from '../../../../shared/modules/transaction.utils';
@@ -147,6 +149,8 @@ const mapStateToProps = (state, ownProps) => {
};
}
customNonceValue = getCustomNonceValue(state);
+ const isEthGasPrice = getIsEthGasPriceFetched(state);
+ const noGasPrice = getNoGasPriceFetched(state);
return {
balance,
@@ -186,6 +190,8 @@ const mapStateToProps = (state, ownProps) => {
nextNonce,
mostRecentOverviewPage: getMostRecentOverviewPage(state),
isMainnet,
+ isEthGasPrice,
+ noGasPrice,
};
};
@@ -204,7 +210,12 @@ export const mapDispatchToProps = (dispatch) => {
},
showCustomizeGasModal: ({ txData, onSubmit, validate }) => {
return dispatch(
- showModal({ name: 'CUSTOMIZE_GAS', txData, onSubmit, validate }),
+ showModal({
+ name: 'CUSTOMIZE_GAS',
+ txData,
+ onSubmit,
+ validate,
+ }),
);
},
updateGasAndCalculate: (updatedTx) => {
@@ -275,6 +286,7 @@ const getValidateEditGas = ({ balance, conversionRate, txData }) => {
const mergeProps = (stateProps, dispatchProps, ownProps) => {
const { balance, conversionRate, txData, unapprovedTxs } = stateProps;
+
const {
cancelAllTransactions: dispatchCancelAllTransactions,
showCustomizeGasModal: dispatchShowCustomizeGasModal,
diff --git a/ui/app/pages/send/send-content/send-content.component.js b/ui/app/pages/send/send-content/send-content.component.js
index 6f4fd7924..6f1a82b92 100644
--- a/ui/app/pages/send/send-content/send-content.component.js
+++ b/ui/app/pages/send/send-content/send-content.component.js
@@ -2,6 +2,11 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import PageContainerContent from '../../../components/ui/page-container/page-container-content.component';
import Dialog from '../../../components/ui/dialog';
+import {
+ ETH_GAS_PRICE_FETCH_WARNING_KEY,
+ GAS_PRICE_FETCH_FAILURE_ERROR_KEY,
+ GAS_PRICE_EXCESSIVE_ERROR_KEY,
+} from '../../../helpers/constants/error-keys';
import SendAmountRow from './send-amount-row';
import SendGasRow from './send-gas-row';
import SendHexDataRow from './send-hex-data-row';
@@ -21,16 +26,30 @@ export default class SendContent extends Component {
warning: PropTypes.string,
error: PropTypes.string,
gasIsExcessive: PropTypes.bool.isRequired,
+ isEthGasPrice: PropTypes.bool,
+ noGasPrice: PropTypes.bool,
};
updateGas = (updateData) => this.props.updateGas(updateData);
render() {
- const { warning, error, gasIsExcessive } = this.props;
+ const {
+ warning,
+ error,
+ gasIsExcessive,
+ isEthGasPrice,
+ noGasPrice,
+ } = this.props;
+
+ let gasError;
+ if (gasIsExcessive) gasError = GAS_PRICE_EXCESSIVE_ERROR_KEY;
+ else if (noGasPrice) gasError = GAS_PRICE_FETCH_FAILURE_ERROR_KEY;
+
return (
- {gasIsExcessive && this.renderError(true)}
+ {gasError && this.renderError(gasError)}
+ {isEthGasPrice && this.renderWarning(ETH_GAS_PRICE_FETCH_WARNING_KEY)}
{error && this.renderError()}
{warning && this.renderWarning()}
{this.maybeRenderAddContact()}
@@ -68,24 +87,22 @@ export default class SendContent extends Component {
);
}
- renderWarning() {
+ renderWarning(gasWarning = '') {
const { t } = this.context;
const { warning } = this.props;
-
return (
);
}
- renderError(gasError = false) {
+ renderError(gasError = '') {
const { t } = this.context;
const { error } = this.props;
-
return (
);
}
diff --git a/ui/app/pages/send/send-content/send-content.container.js b/ui/app/pages/send/send-content/send-content.container.js
index 42e115b94..3c99b3237 100644
--- a/ui/app/pages/send/send-content/send-content.container.js
+++ b/ui/app/pages/send/send-content/send-content.container.js
@@ -3,6 +3,8 @@ import {
getSendTo,
accountsWithSendEtherInfoSelector,
getAddressBookEntry,
+ getIsEthGasPriceFetched,
+ getNoGasPriceFetched,
} from '../../../selectors';
import * as actions from '../../../store/actions';
@@ -19,6 +21,8 @@ function mapStateToProps(state) {
),
contact: getAddressBookEntry(state, to),
to,
+ isEthGasPrice: getIsEthGasPriceFetched(state),
+ noGasPrice: getNoGasPriceFetched(state),
};
}
diff --git a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.component.js b/ui/app/pages/send/send-content/send-gas-row/send-gas-row.component.js
index cf74ee0f3..9cbe21629 100644
--- a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.component.js
+++ b/ui/app/pages/send/send-content/send-gas-row/send-gas-row.component.js
@@ -26,6 +26,8 @@ export default class SendGasRow extends Component {
gasLimit: PropTypes.string,
insufficientBalance: PropTypes.bool,
isMainnet: PropTypes.bool,
+ isEthGasPrice: PropTypes.bool,
+ noGasPrice: PropTypes.bool,
};
static contextTypes = {
@@ -35,11 +37,19 @@ export default class SendGasRow extends Component {
renderAdvancedOptionsButton() {
const { metricsEvent } = this.context;
- const { showCustomizeGasModal, isMainnet } = this.props;
+ const {
+ showCustomizeGasModal,
+ isMainnet,
+ isEthGasPrice,
+ noGasPrice,
+ } = this.props;
// Tests should behave in same way as mainnet, but are using Localhost
if (!isMainnet && !process.env.IN_TEST) {
return null;
}
+ if (isEthGasPrice || noGasPrice) {
+ return null;
+ }
return (
@@ -148,7 +161,11 @@ export default class SendGasRow extends Component {
);
// Tests should behave in same way as mainnet, but are using Localhost
- if (advancedInlineGasShown || (!isMainnet && !process.env.IN_TEST)) {
+ if (
+ advancedInlineGasShown ||
+ (!isMainnet && !process.env.IN_TEST) ||
+ gasPriceFetchFailure
+ ) {
return advancedGasInputs;
} else if (gasButtonGroupShown) {
return gasPriceButtonGroup;
diff --git a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.container.js b/ui/app/pages/send/send-content/send-gas-row/send-gas-row.container.js
index 210819f07..32b0529c4 100644
--- a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.container.js
+++ b/ui/app/pages/send/send-content/send-gas-row/send-gas-row.container.js
@@ -18,6 +18,8 @@ import {
getRenderableEstimateDataForSmallButtonsFromGWEI,
getDefaultActiveButtonIndex,
getIsMainnet,
+ getIsEthGasPriceFetched,
+ getNoGasPriceFetched,
} from '../../../../selectors';
import { isBalanceSufficient, calcGasTotal } from '../../send.utils';
import { calcMaxAmount } from '../send-amount-row/amount-max-button/amount-max-button.utils';
@@ -64,6 +66,8 @@ function mapStateToProps(state) {
balance,
conversionRate,
});
+ const isEthGasPrice = getIsEthGasPriceFetched(state);
+ const noGasPrice = getNoGasPriceFetched(state);
return {
balance: getSendFromBalance(state),
@@ -85,6 +89,8 @@ function mapStateToProps(state) {
sendToken: getSendToken(state),
tokenBalance: getTokenBalance(state),
isMainnet: getIsMainnet(state),
+ isEthGasPrice,
+ noGasPrice,
};
}
diff --git a/ui/app/pages/send/send-footer/send-footer.component.js b/ui/app/pages/send/send-footer/send-footer.component.js
index 5956d9517..ef18f48b1 100644
--- a/ui/app/pages/send/send-footer/send-footer.component.js
+++ b/ui/app/pages/send/send-footer/send-footer.component.js
@@ -27,6 +27,7 @@ export default class SendFooter extends Component {
gasEstimateType: PropTypes.string,
gasIsLoading: PropTypes.bool,
mostRecentOverviewPage: PropTypes.string.isRequired,
+ noGasPrice: PropTypes.bool,
};
static contextTypes = {
@@ -109,6 +110,7 @@ export default class SendFooter extends Component {
to,
gasLimit,
gasIsLoading,
+ noGasPrice,
} = this.props;
const missingTokenBalance = sendToken && !tokenBalance;
const gasLimitTooLow = gasLimit < 5208; // 5208 is hex value of 21000, minimum gas limit
@@ -118,7 +120,8 @@ export default class SendFooter extends Component {
missingTokenBalance ||
!(data || to) ||
gasLimitTooLow ||
- gasIsLoading;
+ gasIsLoading ||
+ noGasPrice;
return shouldBeDisabled;
}
diff --git a/ui/app/pages/send/send-footer/send-footer.component.test.js b/ui/app/pages/send/send-footer/send-footer.component.test.js
index cdcc06308..900c26b2a 100644
--- a/ui/app/pages/send/send-footer/send-footer.component.test.js
+++ b/ui/app/pages/send/send-footer/send-footer.component.test.js
@@ -49,6 +49,7 @@ describe('SendFooter Component', () => {
update={propsMethodSpies.update}
sendErrors={{}}
mostRecentOverviewPage="mostRecentOverviewPage"
+ noGasPrice={false}
/>,
{ context: { t: (str) => str, metricsEvent: () => ({}) } },
);
diff --git a/ui/app/pages/send/send-footer/send-footer.container.js b/ui/app/pages/send/send-footer/send-footer.container.js
index ff7b475bc..d68d16b60 100644
--- a/ui/app/pages/send/send-footer/send-footer.container.js
+++ b/ui/app/pages/send/send-footer/send-footer.container.js
@@ -24,6 +24,7 @@ import {
getGasIsLoading,
getRenderableEstimateDataForSmallButtonsFromGWEI,
getDefaultActiveButtonIndex,
+ getNoGasPriceFetched,
} from '../../../selectors';
import { getMostRecentOverviewPage } from '../../../ducks/history/history';
import { addHexPrefix } from '../../../../../app/scripts/lib/util';
@@ -67,6 +68,7 @@ function mapStateToProps(state) {
gasEstimateType,
gasIsLoading: getGasIsLoading(state),
mostRecentOverviewPage: getMostRecentOverviewPage(state),
+ noGasPrice: getNoGasPriceFetched(state),
};
}
diff --git a/ui/app/selectors/custom-gas.js b/ui/app/selectors/custom-gas.js
index c84c48c71..5f01e8d08 100644
--- a/ui/app/selectors/custom-gas.js
+++ b/ui/app/selectors/custom-gas.js
@@ -27,12 +27,14 @@ export function getCustomGasPrice(state) {
}
export function getBasicGasEstimateLoadingStatus(state) {
- return state.gas.basicEstimateIsLoading;
+ return state.gas.basicEstimateStatus === 'LOADING';
}
export function getAveragePriceEstimateInHexWEI(state) {
- const averagePriceEstimate = state.gas.basicEstimates.average;
- return getGasPriceInHexWei(averagePriceEstimate || '0x0');
+ const averagePriceEstimate = state.gas.basicEstimates
+ ? state.gas.basicEstimates.average
+ : '0x0';
+ return getGasPriceInHexWei(averagePriceEstimate);
}
export function getFastPriceEstimateInHexWEI(state) {
@@ -355,3 +357,17 @@ export function getRenderableEstimateDataForSmallButtonsFromGWEI(state) {
},
];
}
+
+export function getIsEthGasPriceFetched(state) {
+ const gasState = state.gas;
+ return Boolean(
+ gasState.estimateSource === 'eth_gasprice' &&
+ gasState.basicEstimateStatus === 'READY' &&
+ getIsMainnet(state),
+ );
+}
+
+export function getNoGasPriceFetched(state) {
+ const gasState = state.gas;
+ return Boolean(gasState.basicEstimateStatus === 'FAILED');
+}
From 29742b951954f1b463de331df84ff75b22a9498d Mon Sep 17 00:00:00 2001
From: Brad Decker
Date: Wed, 28 Apr 2021 14:53:59 -0500
Subject: [PATCH 02/77] remove the ui/app and ui/lib folders (#10911)
---
.eslintrc.js | 4 +-
.gitignore | 2 +-
.storybook/i18n.js | 8 +-
.storybook/main.js | 18 +--
.storybook/preview.js | 8 +-
app/scripts/controllers/swaps.js | 8 +-
app/scripts/controllers/transactions/index.js | 4 +-
development/build/static.js | 2 +-
development/build/styles.js | 12 +-
development/verify-locale-strings.js | 4 +-
jest.config.js | 2 +-
package.json | 2 +-
test/jest/background.js | 2 +-
test/jest/rendering.js | 4 +-
test/lib/render-helpers.js | 12 +-
test/unit-global/balance-formatter.test.js | 2 +-
ui/{app => }/__mocks__/react-router-dom.js | 0
.../signature-request.constants.js | 3 -
.../account-list-item-component.test.js | 4 +-
.../account-list-item/account-list-item.js | 2 +-
.../components/app/account-list-item/index.js | 0
.../app/account-list-item/index.scss | 0
.../account-menu/account-menu.component.js | 4 +-
.../account-menu/account-menu.container.js | 0
.../app/account-menu/account-menu.test.js | 2 +-
.../components/app/account-menu/index.js | 0
.../components/app/account-menu/index.scss | 0
.../add-token-button.component.js | 0
.../components/app/add-token-button/index.js | 0
.../app/add-token-button/index.scss | 0
ui/{app => }/components/app/alerts/alerts.js | 0
.../components/app/alerts/alerts.scss | 0
ui/{app => }/components/app/alerts/index.js | 0
.../invalid-custom-network-alert/index.js | 0
.../invalid-custom-network-alert.js | 0
.../invalid-custom-network-alert.scss | 0
.../alerts/unconnected-account-alert/index.js | 0
.../unconnected-account-alert.js | 0
.../unconnected-account-alert.scss | 0
.../unconnected-account-alert.test.js | 6 +-
.../components/app/app-components.scss | 0
.../app/app-header/app-header.component.js | 0
.../app/app-header/app-header.container.js | 0
.../app/app-header/app-header.test.js | 0
.../components/app/app-header/index.js | 0
.../components/app/app-header/index.scss | 0
.../app/asset-list-item/asset-list-item.js | 0
.../app/asset-list-item/asset-list-item.scss | 0
.../components/app/asset-list-item/index.js | 0
.../components/app/asset-list/asset-list.js | 0
.../components/app/asset-list/index.js | 0
.../confirm-detail-row.component.js | 0
.../confirm-detail-row.component.test.js | 0
.../confirm-detail-row/index.js | 0
.../confirm-detail-row/index.scss | 0
...onfirm-page-container-content.component.js | 0
...onfirm-page-container-summary.component.js | 0
.../confirm-page-container-summary/index.js | 0
.../confirm-page-container-summary/index.scss | 0
...onfirm-page-container-warning.component.js | 0
.../confirm-page-container-warning/index.js | 0
.../confirm-page-container-warning/index.scss | 0
.../confirm-page-container-content/index.js | 0
.../confirm-page-container-content/index.scss | 0
...confirm-page-container-header.component.js | 4 +-
...rm-page-container-header.component.test.js | 4 +-
.../confirm-page-container-header/index.js | 0
.../confirm-page-container-header/index.scss | 0
...irm-page-container-navigation.component.js | 0
.../index.js | 0
.../index.scss | 0
.../confirm-page-container.component.js | 0
.../app/confirm-page-container/index.js | 0
.../app/confirm-page-container/index.scss | 0
.../connected-accounts-list-item.component.js | 0
.../connected-accounts-list-item/index.js | 0
...nnected-accounts-list-options.component.js | 0
.../connected-accounts-list-options/index.js | 0
.../connected-accounts-list.component.js | 0
.../app/connected-accounts-list/index.js | 0
.../app/connected-accounts-list/index.scss | 0
...onnected-accounts-permissions.component.js | 0
.../connected-accounts-permissions/index.js | 0
.../connected-accounts-permissions/index.scss | 0
.../connected-sites-list.component.js | 0
.../app/connected-sites-list/index.js | 0
.../app/connected-sites-list/index.scss | 0
.../connected-status-indicator.js | 0
.../app/connected-status-indicator/index.js | 0
.../app/connected-status-indicator/index.scss | 0
.../contact-list/contact-list.component.js | 0
.../components/app/contact-list/index.js | 0
.../app/contact-list/recipient-group/index.js | 0
.../recipient-group.component.js | 0
.../components/app/dropdowns/dropdown.js | 0
.../components/app/dropdowns/dropdown.test.js | 0
.../app/dropdowns/network-dropdown.js | 8 +-
.../app/dropdowns/network-dropdown.test.js | 2 +-
.../advanced-gas-input-component.test.js | 0
.../advanced-gas-inputs.component.js | 0
.../advanced-gas-inputs.container.js | 0
.../advanced-gas-inputs/index.js | 0
.../advanced-gas-inputs/index.scss | 0
.../advanced-tab-content-component.test.js | 6 +-
.../advanced-tab-content.component.js | 0
.../advanced-tab-content/index.js | 0
.../advanced-tab-content/index.scss | 0
.../basic-tab-content-component.test.js | 4 +-
.../basic-tab-content.component.js | 0
.../basic-tab-content/index.js | 0
.../basic-tab-content/index.scss | 0
...gas-modal-page-container-component.test.js | 14 +--
...gas-modal-page-container-container.test.js | 8 +-
.../gas-modal-page-container.component.js | 0
.../gas-modal-page-container.container.js | 4 +-
.../gas-modal-page-container/index.js | 0
.../gas-modal-page-container/index.scss | 0
.../gas-price-button-group-component.test.js | 20 ++--
.../gas-price-button-group.component.js | 0
.../gas-price-button-group/index.js | 0
.../gas-price-button-group/index.scss | 0
.../gas-slider/gas-slider.component.js | 0
.../app/gas-customization/gas-slider/index.js | 0
.../gas-customization/gas-slider/index.scss | 0
.../app/gas-customization/index.scss | 0
.../home-notification.component.js | 0
.../components/app/home-notification/index.js | 0
.../app/home-notification/index.scss | 0
ui/{app => }/components/app/info-box/index.js | 0
.../components/app/info-box/index.scss | 0
.../app/info-box/info-box.component.js | 0
.../components/app/info-box/info-box.test.js | 0
.../app/loading-network-screen/index.js | 0
.../loading-network-screen.component.js | 0
.../loading-network-screen.container.js | 2 +-
.../app/menu-bar/account-options-menu.js | 6 +-
ui/{app => }/components/app/menu-bar/index.js | 0
.../components/app/menu-bar/index.scss | 0
.../components/app/menu-bar/menu-bar.js | 4 +-
.../components/app/menu-bar/menu-bar.test.js | 4 +-
ui/{app => }/components/app/menu-droppo.js | 0
.../app/metamask-template-renderer/index.js | 0
.../metamask-template-renderer.js | 0
.../metamask-template-renderer.stories.js | 0
.../safe-component-list.js | 0
.../app/metamask-translation/index.js | 0
.../metamask-translation.js | 0
.../metamask-translation.stories.js | 2 +-
ui/{app => }/components/app/modal/index.js | 0
ui/{app => }/components/app/modal/index.scss | 0
.../app/modal/modal-content/index.js | 0
.../app/modal/modal-content/index.scss | 0
.../modal-content/modal-content.component.js | 0
.../modal-content.component.test.js | 0
.../components/app/modal/modal.component.js | 0
.../app/modal/modal.component.test.js | 0
.../account-details-modal.component.js | 2 +-
.../account-details-modal.container.js | 0
.../account-details-modal.test.js | 0
.../app/modals/account-details-modal/index.js | 0
.../modals/account-details-modal/index.scss | 0
.../account-modal-container.component.js | 0
.../account-modal-container.container.js | 0
.../modals/account-modal-container/index.js | 0
.../modals/account-modal-container/index.scss | 0
.../add-to-addressbook-modal.component.js | 0
.../add-to-addressbook-modal.container.js | 0
.../modals/add-to-addressbook-modal/index.js | 0
.../add-to-addressbook-modal/index.scss | 0
.../cancel-transaction-gas-fee.component.js | 0
...ncel-transaction-gas-fee.component.test.js | 0
.../cancel-transaction-gas-fee/index.js | 0
.../cancel-transaction-gas-fee/index.scss | 0
.../cancel-transaction.component.js | 2 +-
.../cancel-transaction.component.test.js | 0
.../cancel-transaction.container.js | 0
.../app/modals/cancel-transaction/index.js | 0
.../app/modals/cancel-transaction/index.scss | 0
.../confirm-delete-network.component.js | 0
.../confirm-delete-network.container.js | 0
.../confirm-delete-network.test.js | 0
.../modals/confirm-delete-network/index.js | 0
.../confirm-remove-account.component.js | 2 +-
.../confirm-remove-account.container.js | 0
.../confirm-remove-account.test.js | 0
.../modals/confirm-remove-account/index.js | 0
.../modals/confirm-remove-account/index.scss | 0
.../confirm-reset-account.component.js | 0
.../confirm-reset-account.container.js | 0
.../confirm-reset-account.test.js | 0
.../app/modals/confirm-reset-account/index.js | 0
.../customize-nonce.component.js | 0
.../app/modals/customize-nonce/index.js | 0
.../app/modals/customize-nonce/index.scss | 0
.../deposit-ether-modal.component.js | 2 +-
.../deposit-ether-modal.container.js | 0
.../app/modals/deposit-ether-modal/index.js | 0
.../app/modals/deposit-ether-modal/index.scss | 0
.../edit-approval-permission.component.js | 0
.../edit-approval-permission.container.js | 0
.../modals/edit-approval-permission/index.js | 0
.../edit-approval-permission/index.scss | 0
.../export-private-key-modal.component.js | 2 +-
.../export-private-key-modal.container.js | 0
.../modals/export-private-key-modal/index.js | 0
.../export-private-key-modal/index.scss | 0
.../components/app/modals/fade-modal.js | 0
.../hide-token-confirmation-modal.js | 0
.../hide-token-confirmation-modal/index.js | 0
.../hide-token-confirmation-modal/index.scss | 0
ui/{app => }/components/app/modals/index.js | 0
ui/{app => }/components/app/modals/index.scss | 0
.../app/modals/loading-network-error/index.js | 0
.../loading-network-error.component.js | 0
.../loading-network-error.container.js | 0
.../modals/metametrics-opt-in-modal/index.js | 0
.../metametrics-opt-in-modal/index.scss | 0
.../metametrics-opt-in-modal.component.js | 0
.../metametrics-opt-in-modal.container.js | 0
.../metametrics-opt-in-modal.test.js | 2 +-
ui/{app => }/components/app/modals/modal.js | 6 +-
.../app/modals/new-account-modal/index.js | 0
.../app/modals/new-account-modal/index.scss | 0
.../new-account-modal.component.js | 0
.../new-account-modal.container.js | 0
.../components/app/modals/qr-scanner/index.js | 0
.../app/modals/qr-scanner/index.scss | 0
.../modals/qr-scanner/qr-scanner.component.js | 6 +-
.../modals/qr-scanner/qr-scanner.container.js | 0
.../app/modals/reject-transactions/index.js | 0
.../app/modals/reject-transactions/index.scss | 0
.../reject-transactions.component.js | 0
.../reject-transactions.container.js | 0
.../reject-transactions.test.js | 0
.../app/modals/transaction-confirmed/index.js | 0
.../modals/transaction-confirmed/index.scss | 0
.../transaction-confirmed.component.js | 0
.../transaction-confirmed.container.js | 0
.../transaction-confirmed.test.js | 0
.../app/multiple-notifications/index.js | 0
.../app/multiple-notifications/index.scss | 0
.../multiple-notifications.component.js | 0
.../components/app/network-display/index.js | 0
.../components/app/network-display/index.scss | 0
.../app/network-display/network-display.js | 2 +-
.../app/permission-page-container/index.js | 0
.../app/permission-page-container/index.scss | 0
.../index.js | 0
...ission-page-container-content.component.js | 0
.../permission-page-container.component.js | 0
.../permission-page-container.container.js | 0
.../app/permissions-connect-footer/index.js | 0
.../app/permissions-connect-footer/index.scss | 0
.../permissions-connect-footer.component.js | 0
.../app/permissions-connect-header/index.js | 0
.../app/permissions-connect-header/index.scss | 0
.../permissions-connect-header.component.js | 0
.../components/app/selected-account/index.js | 0
.../app/selected-account/index.scss | 0
.../selected-account-component.test.js | 0
.../selected-account.component.js | 2 +-
.../selected-account.container.js | 0
ui/{app => }/components/app/sidebars/index.js | 0
.../components/app/sidebars/index.scss | 0
.../app/sidebars/sidebar-content.scss | 0
.../app/sidebars/sidebar.component.js | 0
.../app/sidebars/sidebar.component.test.js | 0
.../app/signature-request-original/index.js | 0
.../app/signature-request-original/index.scss | 0
.../signature-request-original.component.js | 4 +-
.../signature-request-original.container.js | 2 +-
.../components/app/signature-request/index.js | 0
.../app/signature-request/index.scss | 0
.../signature-request-footer/index.js | 0
.../signature-request-footer/index.scss | 0
.../signature-request-footer.component.js | 0
.../signature-request-header/index.js | 0
.../signature-request-header/index.scss | 0
.../signature-request-header.component.js | 0
.../signature-request-message/index.js | 0
.../signature-request-message/index.scss | 0
.../signature-request-message.component.js | 0
.../signature-request.component.js | 2 +-
.../signature-request.component.test.js | 4 +-
.../signature-request.constants.js | 3 +
.../signature-request.container.js | 2 +-
.../signature-request.container.test.js | 2 +-
.../signature-request.stories.js | 2 +-
ui/{app => }/components/app/tab-bar/index.js | 0
.../components/app/tab-bar/index.scss | 0
.../components/app/tab-bar/tab-bar.js | 0
.../components/app/token-cell/index.js | 0
.../components/app/token-cell/token-cell.js | 0
.../components/app/token-cell/token-cell.scss | 0
.../app/token-cell/token-cell.test.js | 0
.../components/app/token-list/index.js | 0
.../components/app/token-list/token-list.js | 0
.../app/transaction-activity-log/index.js | 0
.../app/transaction-activity-log/index.scss | 0
.../transaction-activity-log-icon/index.js | 0
...transaction-activity-log-icon.component.js | 0
.../transaction-activity-log.component.js | 2 +-
...transaction-activity-log.component.test.js | 0
.../transaction-activity-log.constants.js | 0
.../transaction-activity-log.container.js | 0
...transaction-activity-log.container.test.js | 0
.../transaction-activity-log.util.js | 2 +-
.../transaction-activity-log.util.test.js | 4 +-
.../app/transaction-breakdown/index.js | 0
.../app/transaction-breakdown/index.scss | 0
.../transaction-breakdown-row/index.js | 0
.../transaction-breakdown-row/index.scss | 0
.../transaction-breakdown-row.component.js | 0
...ransaction-breakdown-row.component.test.js | 0
.../transaction-breakdown.component.js | 0
.../transaction-breakdown.component.test.js | 2 +-
.../transaction-breakdown.container.js | 0
.../components/app/transaction-icon/index.js | 0
.../app/transaction-icon/transaction-icon.js | 2 +-
.../transaction-icon/transaction-icon.scss | 0
.../transaction-list-item-details/index.js | 0
.../transaction-list-item-details/index.scss | 0
...transaction-list-item-details.component.js | 4 +-
...action-list-item-details.component.test.js | 2 +-
...transaction-list-item-details.container.js | 2 +-
.../app/transaction-list-item/index.js | 0
.../app/transaction-list-item/index.scss | 0
.../transaction-list-item.component.js | 2 +-
.../components/app/transaction-list/index.js | 0
.../app/transaction-list/index.scss | 0
.../transaction-list.component.js | 4 +-
.../app/transaction-status/index.js | 0
.../app/transaction-status/index.scss | 0
.../transaction-status.component.js | 2 +-
.../transaction-status.component.test.js | 0
.../index.js | 0
...-preferenced-currency-display.component.js | 0
...erenced-currency-display.component.test.js | 0
.../user-preferenced-currency-input/index.js | 0
...er-preferenced-currency-input.component.js | 0
...eferenced-currency-input.component.test.js | 0
...er-preferenced-currency-input.container.js | 0
...eferenced-currency-input.container.test.js | 0
.../app/user-preferenced-token-input/index.js | 0
.../user-preferenced-token-input.component.js | 0
...-preferenced-token-input.component.test.js | 0
.../user-preferenced-token-input.container.js | 0
...-preferenced-token-input.container.test.js | 0
.../app/wallet-overview/eth-overview.js | 0
.../components/app/wallet-overview/index.js | 0
.../components/app/wallet-overview/index.scss | 0
.../app/wallet-overview/token-overview.js | 0
.../app/wallet-overview/wallet-overview.js | 0
.../components/app/whats-new-popup/index.js | 0
.../components/app/whats-new-popup/index.scss | 0
.../app/whats-new-popup/whats-new-popup.js | 2 +-
...cccount-mismatch-warning.component.test.js | 0
.../account-mismatch-warning.component.js | 0
.../ui/account-mismatch-warning/index.scss | 0
.../alert-circle-icon.component.js | 0
.../alert-circle-icon.stories.js | 0
.../components/ui/alert-circle-icon/index.js | 0
.../ui/alert-circle-icon/index.scss | 0
ui/{app => }/components/ui/alert/index.js | 0
ui/{app => }/components/ui/alert/index.scss | 0
.../components/ui/alert/index.test.js | 0
ui/{app => }/components/ui/box/box.js | 0
ui/{app => }/components/ui/box/box.scss | 0
ui/{app => }/components/ui/box/box.stories.js | 0
ui/{app => }/components/ui/box/index.js | 0
.../ui/breadcrumbs/breadcrumbs.component.js | 0
.../breadcrumbs/breadcrumbs.component.test.js | 0
.../components/ui/breadcrumbs/index.js | 0
.../components/ui/breadcrumbs/index.scss | 0
.../button-group-component.test.js | 0
.../ui/button-group/button-group.component.js | 0
.../ui/button-group/button-group.stories.js | 0
.../components/ui/button-group/index.js | 0
.../components/ui/button-group/index.scss | 0
.../components/ui/button/button.component.js | 0
.../components/ui/button/button.stories.js | 0
.../components/ui/button/buttons.scss | 0
ui/{app => }/components/ui/button/index.js | 0
ui/{app => }/components/ui/callout/callout.js | 0
.../components/ui/callout/callout.scss | 0
.../components/ui/callout/callout.stories.js | 0
ui/{app => }/components/ui/callout/index.js | 0
.../components/ui/card/card.component.js | 0
.../components/ui/card/card.component.test.js | 0
ui/{app => }/components/ui/card/index.js | 0
ui/{app => }/components/ui/card/index.scss | 0
.../ui/check-box/check-box.component.js | 0
.../ui/check-box/check-box.stories.js | 0
ui/{app => }/components/ui/check-box/index.js | 0
.../components/ui/check-box/index.scss | 0
ui/{app => }/components/ui/chip/chip.js | 0
ui/{app => }/components/ui/chip/chip.scss | 0
.../components/ui/chip/chip.stories.js | 0
ui/{app => }/components/ui/chip/index.js | 0
.../ui/circle-icon/circle-icon.component.js | 0
.../ui/circle-icon/circle-icon.stories.js | 0
.../components/ui/circle-icon/index.js | 0
.../components/ui/circle-icon/index.scss | 0
.../ui/color-indicator/color-indicator.js | 0
.../ui/color-indicator/color-indicator.scss | 0
.../color-indicator.stories.js | 0
.../components/ui/color-indicator/index.js | 0
.../ui/confusable/confusable.component.js | 0
.../confusable/confusable.component.test.js | 0
.../components/ui/confusable/index.js | 0
.../components/ui/confusable/index.scss | 0
.../currency-display.component.js | 0
.../currency-display.component.test.js | 0
.../components/ui/currency-display/index.js | 0
.../components/ui/currency-display/index.scss | 0
.../currency-input.component.js | 0
.../currency-input.component.test.js | 0
.../currency-input.container.js | 0
.../currency-input.container.test.js | 0
.../components/ui/currency-input/index.js | 0
.../components/ui/currency-input/index.scss | 0
.../ui/definition-list/definition-list.js | 0
.../ui/definition-list/definition-list.scss | 0
.../definition-list.stories.js | 0
.../components/ui/definition-list/index.js | 0
ui/{app => }/components/ui/dialog/dialog.scss | 0
ui/{app => }/components/ui/dialog/index.js | 0
.../components/ui/dropdown/dropdown.js | 0
.../components/ui/dropdown/dropdown.scss | 0
.../ui/dropdown/dropdown.stories.js | 0
ui/{app => }/components/ui/dropdown/index.js | 0
.../ui/editable-label/editable-label.js | 0
.../components/ui/editable-label/index.js | 0
.../components/ui/editable-label/index.scss | 0
.../error-message/error-message.component.js | 0
.../error-message.component.test.js | 0
.../components/ui/error-message/index.js | 0
.../components/ui/error-message/index.scss | 0
.../export-text-container.component.js | 0
.../ui/export-text-container/index.js | 0
.../ui/export-text-container/index.scss | 0
.../hex-to-decimal.component.js | 0
.../hex-to-decimal.component.test.js | 0
.../components/ui/hex-to-decimal/index.js | 0
.../components/ui/icon-border/icon-border.js | 0
.../ui/icon-border/icon-border.scss | 0
.../components/ui/icon-border/index.js | 0
.../components/ui/icon-button/icon-button.js | 0
.../ui/icon-button/icon-button.scss | 0
.../components/ui/icon-button/index.js | 0
.../icon-with-fallback.component.js | 0
.../icon-with-fallback.scss | 0
.../components/ui/icon-with-fallback/index.js | 0
.../ui/icon-with-label/icon-with-label.js | 0
.../components/ui/icon-with-label/index.js | 0
.../components/ui/icon-with-label/index.scss | 0
.../ui/icon/approve-icon.component.js | 0
.../components/ui/icon/copy-icon.component.js | 0
.../components/ui/icon/icon.stories.js | 0
ui/{app => }/components/ui/icon/index.scss | 0
.../ui/icon/info-icon-inverted.component.js | 0
.../components/ui/icon/info-icon.component.js | 0
.../ui/icon/interaction-icon.component.js | 0
.../ui/icon/overview-buy-icon.component.js | 0
.../ui/icon/overview-send-icon.component.js | 0
.../components/ui/icon/paper-airplane-icon.js | 0
.../components/ui/icon/preloader/index.js | 0
.../components/ui/icon/preloader/index.scss | 0
.../preloader/preloader-icon.component.js | 0
.../ui/icon/receive-icon.component.js | 0
.../components/ui/icon/send-icon.component.js | 0
.../components/ui/icon/sign-icon.component.js | 0
.../ui/icon/sun-check-icon.component.js | 0
.../ui/icon/swap-icon-for-list.component.js | 0
.../components/ui/icon/swap-icon.component.js | 0
.../blockieIdenticon.component.js | 0
.../ui/identicon/blockieIdenticon/index.js | 0
.../ui/identicon/identicon.component.js | 2 +-
.../ui/identicon/identicon.component.test.js | 0
.../ui/identicon/identicon.container.js | 0
.../ui/identicon/identicon.stories.js | 0
ui/{app => }/components/ui/identicon/index.js | 0
.../components/ui/identicon/index.scss | 0
.../components/ui/info-tooltip/index.js | 0
.../components/ui/info-tooltip/index.scss | 0
.../ui/info-tooltip/info-tooltip.js | 0
.../ui/info-tooltip/info-tooltip.stories.js | 0
ui/{app => }/components/ui/jazzicon/index.js | 0
.../ui/jazzicon/jazzicon.component.js | 2 +-
ui/{app => }/components/ui/list-item/index.js | 0
.../components/ui/list-item/index.scss | 0
.../ui/list-item/list-item.component.js | 0
.../ui/list-item/list-item.component.test.js | 0
.../ui/list-item/list-item.stories.js | 0
.../components/ui/loading-indicator/index.js | 0
.../ui/loading-indicator/loading-indicator.js | 0
.../loading-indicator/loading-indicator.scss | 0
.../components/ui/loading-screen/index.js | 0
.../components/ui/loading-screen/index.scss | 0
.../loading-screen.component.js | 0
ui/{app => }/components/ui/lock-icon/index.js | 0
.../ui/lock-icon/lock-icon.component.js | 0
ui/{app => }/components/ui/mascot/index.js | 0
.../components/ui/mascot/mascot.component.js | 0
.../components/ui/mascot/mascot.stories.js | 0
ui/{app => }/components/ui/menu/index.js | 0
ui/{app => }/components/ui/menu/menu-item.js | 0
ui/{app => }/components/ui/menu/menu.js | 0
ui/{app => }/components/ui/menu/menu.scss | 0
.../components/ui/menu/menu.stories.js | 0
.../components/ui/metafox-logo/index.js | 0
.../ui/metafox-logo/metafox-logo.component.js | 0
.../metafox-logo.component.test.js | 0
.../components/ui/page-container/index.js | 0
.../components/ui/page-container/index.scss | 0
.../page-container-content.component.js | 0
.../page-container-footer/index.js | 0
.../page-container-footer.component.js | 0
.../page-container-footer.component.test.js | 0
.../page-container-header/index.js | 0
.../page-container-header.component.js | 0
.../page-container-header.component.test.js | 0
.../page-container.component.js | 0
ui/{app => }/components/ui/popover/index.js | 0
ui/{app => }/components/ui/popover/index.scss | 0
.../ui/popover/popover.component.js | 0
.../components/ui/popover/popover.stories.js | 0
.../components/ui/pulse-loader/index.js | 0
.../components/ui/pulse-loader/index.scss | 0
.../ui/pulse-loader/pulse-loader.js | 0
.../ui/pulse-loader/pulse-loader.stories.js | 0
ui/{app => }/components/ui/qr-code/index.js | 0
ui/{app => }/components/ui/qr-code/index.scss | 0
ui/{app => }/components/ui/qr-code/qr-code.js | 2 +-
.../components/ui/readonly-input/index.js | 0
.../components/ui/readonly-input/index.scss | 0
.../ui/readonly-input/readonly-input.js | 0
.../components/ui/search-icon/index.js | 0
.../ui/search-icon/search-icon.component.js | 0
.../ui/sender-to-recipient/index.js | 0
.../ui/sender-to-recipient/index.scss | 0
.../sender-to-recipient.component.js | 2 +-
.../sender-to-recipient.constants.js | 0
ui/{app => }/components/ui/site-icon/index.js | 0
.../components/ui/site-icon/site-icon.js | 0
ui/{app => }/components/ui/snackbar/index.js | 0
.../components/ui/snackbar/index.scss | 0
.../ui/snackbar/snackbar.component.js | 0
ui/{app => }/components/ui/spinner/index.js | 0
.../ui/spinner/spinner.component.js | 0
ui/{app => }/components/ui/tabs/index.js | 0
ui/{app => }/components/ui/tabs/index.scss | 0
ui/{app => }/components/ui/tabs/tab/index.js | 0
.../components/ui/tabs/tab/index.scss | 0
.../components/ui/tabs/tab/tab.component.js | 0
.../components/ui/tabs/tabs.component.js | 0
.../components/ui/tabs/tabs.stories.js | 0
.../components/ui/text-field/index.js | 0
.../ui/text-field/text-field.component.js | 0
.../ui/text-field/text-field.stories.js | 0
.../components/ui/toggle-button/index.js | 0
.../components/ui/toggle-button/index.scss | 0
.../toggle-button/toggle-button.component.js | 0
.../components/ui/token-balance/index.js | 0
.../components/ui/token-balance/index.scss | 0
.../ui/token-balance/token-balance.js | 0
.../ui/token-currency-display/index.js | 0
.../token-currency-display.component.js | 0
.../components/ui/token-input/index.js | 0
.../ui/token-input/token-input.component.js | 2 +-
.../token-input/token-input.component.test.js | 0
.../ui/token-input/token-input.container.js | 0
ui/{app => }/components/ui/tooltip/index.js | 0
ui/{app => }/components/ui/tooltip/index.scss | 0
ui/{app => }/components/ui/tooltip/tooltip.js | 0
.../ui/truncated-definition-list/index.js | 0
.../truncated-definition-list.js | 0
.../truncated-definition-list.scss | 0
.../truncated-definition-list.stories.js | 0
.../components/ui/typography/index.js | 0
.../components/ui/typography/typography.js | 0
.../components/ui/typography/typography.scss | 0
.../ui/typography/typography.stories.js | 0
ui/{app => }/components/ui/ui-components.scss | 0
.../components/ui/unit-input/index.js | 0
.../components/ui/unit-input/index.scss | 0
.../ui/unit-input/unit-input.component.js | 0
.../unit-input/unit-input.component.test.js | 0
ui/{app => }/components/ui/url-icon/index.js | 0
.../components/ui/url-icon/index.scss | 0
.../components/ui/url-icon/url-icon.js | 0
ui/{app => }/contexts/i18n.js | 0
ui/{app => }/contexts/metametrics.js | 2 +-
ui/{app => }/contexts/metametrics.new.js | 10 +-
ui/{app => }/css/base-styles.scss | 14 +--
.../css/design-system/attributes.scss | 0
.../css/design-system/breakpoints.scss | 0
ui/{app => }/css/design-system/colors.scss | 0
.../css/design-system/deprecated-colors.scss | 0
ui/{app => }/css/design-system/index.scss | 0
.../css/design-system/typography.scss | 6 +-
ui/{app => }/css/design-system/z-index.scss | 0
ui/{app => }/css/index.scss | 2 +-
ui/{app => }/css/itcss/README.md | 0
ui/{app => }/css/itcss/components/index.scss | 0
.../css/itcss/components/network.scss | 0
.../css/itcss/components/newui-sections.scss | 0
ui/{app => }/css/itcss/components/send.scss | 0
ui/{app => }/css/itcss/settings/index.scss | 0
.../css/itcss/settings/variables.scss | 0
ui/{app => }/css/itcss/tools/index.scss | 0
ui/{app => }/css/itcss/tools/utilities.scss | 0
ui/{app => }/css/reset.scss | 0
ui/{app => }/css/utilities/_colors.scss | 0
ui/{app => }/css/utilities/_spacing.scss | 0
ui/{app => }/css/utilities/index.scss | 0
ui/{app => }/ducks/alerts/enums.js | 0
ui/{app => }/ducks/alerts/index.js | 0
.../ducks/alerts/invalid-custom-network.js | 2 +-
.../ducks/alerts/unconnected-account.js | 2 +-
ui/{app => }/ducks/app/app.js | 0
ui/{app => }/ducks/app/app.test.js | 0
.../confirm-transaction.duck.js | 0
.../confirm-transaction.duck.test.js | 4 +-
ui/{app => }/ducks/gas/gas-duck.test.js | 2 +-
ui/{app => }/ducks/gas/gas.duck.js | 5 +-
ui/{app => }/ducks/history/history.js | 0
ui/{app => }/ducks/index.js | 2 +-
ui/{app => }/ducks/locale/locale.js | 0
ui/{app => }/ducks/metamask/metamask.js | 4 +-
ui/{app => }/ducks/metamask/metamask.test.js | 0
ui/{app => }/ducks/send/send-duck.test.js | 0
ui/{app => }/ducks/send/send.duck.js | 0
ui/{app => }/ducks/swaps/swaps.js | 4 +-
ui/{app => }/ducks/swaps/swaps.test.js | 2 +-
.../constants/available-conversions.json | 0
ui/{app => }/helpers/constants/common.js | 0
.../helpers/constants/connected-sites.js | 0
.../helpers/constants/design-system.js | 0
ui/{app => }/helpers/constants/error-keys.js | 0
ui/{app => }/helpers/constants/routes.js | 0
.../helpers/constants/transactions.js | 2 +-
.../authenticated/authenticated.component.js | 0
.../authenticated/authenticated.container.js | 0
.../authenticated/index.js | 0
.../feature-toggled-route.js | 0
.../initialized/index.js | 0
.../initialized/initialized.component.js | 0
.../initialized/initialized.container.js | 0
.../with-modal-props/index.js | 0
.../with-modal-props/with-modal-props.js | 0
.../with-modal-props/with-modal-props.test.js | 0
ui/{lib => helpers/utils}/account-link.js | 0
.../utils}/account-link.test.js | 2 +-
ui/{app => }/helpers/utils/common.util.js | 0
.../helpers/utils/common.util.test.js | 0
ui/{app => }/helpers/utils/confirm-tx.util.js | 2 +-
.../helpers/utils/confirm-tx.util.test.js | 0
ui/{app => }/helpers/utils/conversion-util.js | 0
.../helpers/utils/conversion-util.test.js | 0
.../helpers/utils/conversions.util.js | 2 +-
.../helpers/utils/conversions.util.test.js | 0
.../helpers/utils/fetch-with-cache.js | 4 +-
.../helpers/utils/fetch-with-cache.test.js | 4 +-
ui/{app => }/helpers/utils/formatters.js | 0
ui/{app => }/helpers/utils/i18n-helper.js | 2 +-
.../helpers/utils/i18n-helper.test.js | 0
ui/{lib => helpers/utils}/icon-factory.js | 2 +-
ui/{lib => helpers/utils}/is-mobile-view.js | 0
ui/{lib => helpers/utils}/storage-helpers.js | 0
.../helpers/utils/switch-direction.js | 0
ui/{app => }/helpers/utils/token-util.js | 0
.../helpers/utils/transactions.util.js | 4 +-
.../helpers/utils/transactions.util.test.js | 2 +-
ui/{lib => helpers/utils}/tx-helper.js | 4 +-
ui/{lib => helpers/utils}/tx-helper.test.js | 2 +-
ui/{app => }/helpers/utils/util.js | 6 +-
ui/{app => }/helpers/utils/util.test.js | 0
ui/{lib => helpers/utils}/webcam-utils.js | 4 +-
ui/{app => }/hooks/useCancelTransaction.js | 0
.../hooks/useCancelTransaction.test.js | 2 +-
ui/{app => }/hooks/useCopyToClipboard.js | 0
ui/{app => }/hooks/useCurrencyDisplay.js | 0
ui/{app => }/hooks/useCurrencyDisplay.test.js | 0
ui/{app => }/hooks/useCurrentAsset.js | 2 +-
ui/{app => }/hooks/useEqualityCheck.js | 0
ui/{app => }/hooks/useEthFiatAmount.js | 0
ui/{app => }/hooks/useI18nContext.js | 0
ui/{app => }/hooks/useMethodData.js | 0
ui/{app => }/hooks/useMetricEvent.js | 2 +-
ui/{app => }/hooks/useOriginMetadata.js | 0
ui/{app => }/hooks/usePrevious.js | 0
ui/{app => }/hooks/useRetryTransaction.js | 0
.../hooks/useRetryTransaction.test.js | 2 +-
ui/{app => }/hooks/useShouldShowSpeedUp.js | 0
ui/{app => }/hooks/useSwappedTokenValue.js | 4 +-
ui/{app => }/hooks/useTimeout.js | 0
ui/{app => }/hooks/useTokenData.js | 0
ui/{app => }/hooks/useTokenData.test.js | 2 +-
ui/{app => }/hooks/useTokenDisplayValue.js | 0
.../hooks/useTokenDisplayValue.test.js | 0
ui/{app => }/hooks/useTokenFiatAmount.js | 0
ui/{app => }/hooks/useTokenTracker.js | 0
ui/{app => }/hooks/useTokensToSearch.js | 4 +-
.../hooks/useTransactionDisplayData.js | 2 +-
.../hooks/useTransactionDisplayData.test.js | 8 +-
.../hooks/useUserPreferencedCurrency.js | 0
.../hooks/useUserPreferencedCurrency.test.js | 0
ui/index.js | 18 +--
ui/lib/shallow-with-context.js | 7 --
ui/lib/test-timeout.js | 5 -
.../pages/add-token/add-token.component.js | 4 +-
.../pages/add-token/add-token.container.js | 0
.../pages/add-token/add-token.test.js | 2 +-
ui/{app => }/pages/add-token/index.js | 0
ui/{app => }/pages/add-token/index.scss | 0
.../pages/add-token/token-list/index.js | 0
.../pages/add-token/token-list/index.scss | 0
.../token-list-placeholder/index.js | 0
.../token-list-placeholder/index.scss | 0
.../token-list-placeholder.component.js | 0
.../token-list/token-list.component.js | 0
.../token-list/token-list.container.js | 0
.../pages/add-token/token-search/index.js | 0
.../token-search/token-search.component.js | 0
ui/{app => }/pages/asset/asset.js | 0
ui/{app => }/pages/asset/asset.scss | 0
.../asset/components/asset-breadcrumb.js | 0
.../asset/components/asset-navigation.js | 0
.../pages/asset/components/asset-options.js | 0
.../pages/asset/components/native-asset.js | 2 +-
.../pages/asset/components/token-asset.js | 0
ui/{app => }/pages/asset/index.js | 0
.../confirm-add-suggested-token.component.js | 4 +-
.../confirm-add-suggested-token.container.js | 0
.../confirm-add-suggested-token/index.js | 0
.../confirm-add-token.component.js | 0
.../confirm-add-token.container.js | 0
ui/{app => }/pages/confirm-add-token/index.js | 0
.../pages/confirm-add-token/index.scss | 0
.../confirm-approve-content.component.js | 0
.../confirm-approve-content/index.js | 0
.../confirm-approve-content/index.scss | 0
.../pages/confirm-approve/confirm-approve.js | 0
.../confirm-approve/confirm-approve.util.js | 2 +-
ui/{app => }/pages/confirm-approve/index.js | 0
ui/{app => }/pages/confirm-approve/index.scss | 0
.../confirm-decrypt-message.component.js | 4 +-
.../confirm-decrypt-message.container.js | 0
.../confirm-decrypt-message.scss | 0
.../pages/confirm-decrypt-message/index.js | 0
.../confirm-deploy-contract.component.js | 2 +-
.../confirm-deploy-contract.container.js | 0
.../pages/confirm-deploy-contract/index.js | 0
...confirm-encryption-public-key.component.js | 4 +-
...confirm-encryption-public-key.container.js | 0
.../confirm-encryption-public-key.scss | 0
.../confirm-encryption-public-key/index.js | 0
.../confirm-send-ether.component.js | 0
.../confirm-send-ether.container.js | 0
.../pages/confirm-send-ether/index.js | 0
.../confirm-send-token.component.js | 0
.../confirm-send-token.container.js | 0
.../pages/confirm-send-token/index.js | 0
...onfirm-token-transaction-base.component.js | 0
...onfirm-token-transaction-base.container.js | 0
.../confirm-token-transaction-base/index.js | 0
.../confirm-transaction-base.component.js | 8 +-
...confirm-transaction-base.component.test.js | 0
.../confirm-transaction-base.container.js | 4 +-
.../pages/confirm-transaction-base/index.js | 0
.../confirm-transaction-switch.component.js | 4 +-
.../confirm-transaction-switch.container.js | 0
.../pages/confirm-transaction-switch/index.js | 0
.../pages/confirm-transaction/conf-tx.js | 6 +-
.../confirm-transaction.component.js | 0
.../confirm-transaction.container.js | 0
.../pages/confirm-transaction/index.js | 0
.../confirmation-footer.js | 0
.../confirmation-footer.scss | 0
.../components/confirmation-footer/index.js | 0
.../pages/confirmation/confirmation.js | 0
.../pages/confirmation/confirmation.scss | 0
ui/{app => }/pages/confirmation/index.js | 0
.../templates/add-ethereum-chain.js | 0
.../pages/confirmation/templates/index.js | 2 +-
.../templates/switch-ethereum-chain.js | 2 +-
.../connected-accounts.component.js | 0
.../connected-accounts.container.js | 0
.../pages/connected-accounts/index.js | 0
.../pages/connected-accounts/index.scss | 0
.../connected-sites.component.js | 0
.../connected-sites.container.js | 0
ui/{app => }/pages/connected-sites/index.js | 0
ui/{app => }/pages/connected-sites/index.scss | 0
.../connect-hardware/account-list.js | 2 +-
.../create-account/connect-hardware/index.js | 0
.../connect-hardware/index.scss | 0
.../connect-hardware/select-hardware.js | 0
.../create-account.component.js | 0
.../create-account/import-account/index.js | 0
.../create-account/import-account/index.scss | 0
.../create-account/import-account/json.js | 0
.../import-account/private-key.js | 0
ui/{app => }/pages/create-account/index.js | 0
ui/{app => }/pages/create-account/index.scss | 0
.../create-account/new-account.component.js | 0
.../create-account/new-account.container.js | 0
ui/{app => }/pages/error/error.component.js | 4 +-
ui/{app => }/pages/error/index.js | 0
ui/{app => }/pages/error/index.scss | 0
.../create-password.component.js | 0
.../create-password.container.js | 0
.../import-with-seed-phrase.component.js | 0
.../import-with-seed-phrase.component.test.js | 0
.../import-with-seed-phrase.container.js | 0
.../import-with-seed-phrase/index.js | 0
.../first-time-flow/create-password/index.js | 0
.../create-password/new-account/index.js | 0
.../new-account/new-account.component.js | 0
.../end-of-flow/end-of-flow.component.js | 0
.../end-of-flow/end-of-flow.container.js | 0
.../end-of-flow/end-of-flow.test.js | 4 +-
.../first-time-flow/end-of-flow/index.js | 0
.../first-time-flow/end-of-flow/index.scss | 0
.../first-time-flow-switch.component.js | 0
.../first-time-flow-switch.container.js | 0
.../first-time-flow-switch.test.js | 2 +-
.../first-time-flow-switch/index.js | 0
.../first-time-flow.component.js | 0
.../first-time-flow.container.js | 0
ui/{app => }/pages/first-time-flow/index.js | 0
ui/{app => }/pages/first-time-flow/index.scss | 0
.../metametrics-opt-in/index.js | 0
.../metametrics-opt-in/index.scss | 0
.../metametrics-opt-in.component.js | 0
.../metametrics-opt-in.container.js | 0
.../metametrics-opt-in.test.js | 2 +-
.../onboarding-initiator-util.js | 0
.../confirm-seed-phrase-component.test.js | 0
.../confirm-seed-phrase.component.js | 0
.../confirm-seed-phrase.container.js | 0
.../draggable-seed.component.js | 0
.../seed-phrase/confirm-seed-phrase/index.js | 0
.../confirm-seed-phrase/index.scss | 0
.../first-time-flow/seed-phrase/index.js | 0
.../first-time-flow/seed-phrase/index.scss | 0
.../seed-phrase/reveal-seed-phrase/index.js | 0
.../seed-phrase/reveal-seed-phrase/index.scss | 0
.../reveal-seed-phrase.component.js | 0
.../reveal-seed-phrase.container.js | 0
.../reveal-seed-phrase.test.js | 0
.../seed-phrase/seed-phrase.component.js | 0
.../first-time-flow/select-action/index.js | 0
.../first-time-flow/select-action/index.scss | 0
.../select-action/select-action.component.js | 0
.../select-action/select-action.container.js | 0
.../select-action/select-action.test.js | 2 +-
.../pages/first-time-flow/welcome/index.js | 0
.../pages/first-time-flow/welcome/index.scss | 0
.../welcome/welcome.component.js | 0
.../welcome/welcome.container.js | 0
.../first-time-flow/welcome/welcome.test.js | 2 +-
ui/{app => }/pages/home/home.component.js | 0
ui/{app => }/pages/home/home.container.js | 6 +-
ui/{app => }/pages/home/index.js | 0
ui/{app => }/pages/home/index.scss | 0
ui/{app => }/pages/index.js | 0
ui/{app => }/pages/keychains/index.scss | 0
ui/{app => }/pages/keychains/restore-vault.js | 0
ui/{app => }/pages/keychains/reveal-seed.js | 0
.../pages/keychains/reveal-seed.test.js | 0
ui/{app => }/pages/lock/index.js | 0
ui/{app => }/pages/lock/lock.component.js | 0
ui/{app => }/pages/lock/lock.container.js | 0
ui/{app => }/pages/lock/lock.test.js | 2 +-
ui/{app => }/pages/mobile-sync/index.js | 0
.../mobile-sync/mobile-sync.component.js | 0
.../mobile-sync/mobile-sync.container.js | 0
ui/{app => }/pages/pages.scss | 0
.../choose-account.component.js | 0
.../choose-account/index.js | 0
.../choose-account/index.scss | 0
.../pages/permissions-connect/index.js | 0
.../pages/permissions-connect/index.scss | 0
.../permissions-connect.component.js | 4 +-
.../permissions-connect.container.js | 0
.../permissions-connect/redirect/index.js | 0
.../permissions-connect/redirect/index.scss | 0
.../permissions-redirect.component.js | 0
ui/{app => }/pages/routes/index.js | 0
ui/{app => }/pages/routes/routes.component.js | 6 +-
ui/{app => }/pages/routes/routes.container.js | 0
ui/{app => }/pages/send/index.js | 0
.../add-recipient/add-recipient.component.js | 2 +-
.../add-recipient.component.test.js | 0
.../add-recipient/add-recipient.container.js | 0
.../add-recipient.container.test.js | 4 +-
.../add-recipient/add-recipient.js | 2 +-
.../add-recipient/add-recipient.utils.test.js | 9 +-
.../add-recipient/ens-input.component.js | 6 +-
.../add-recipient/ens-input.container.js | 2 +-
.../send-content/add-recipient/ens-input.js | 0
.../send/send-content/add-recipient/index.js | 0
ui/{app => }/pages/send/send-content/index.js | 0
.../amount-max-button.component.js | 0
.../amount-max-button.component.test.js | 0
.../amount-max-button.container.js | 0
.../amount-max-button.container.test.js | 6 +-
.../amount-max-button.utils.js | 2 +-
.../amount-max-button.utils.test.js | 0
.../amount-max-button/index.js | 0
.../send-content/send-amount-row/index.js | 0
.../send-amount-row.component.js | 0
.../send-amount-row.component.test.js | 0
.../send-amount-row.container.js | 0
.../send-amount-row.container.test.js | 4 +-
.../send-amount-row/send-amount-row.scss | 0
.../send/send-content/send-asset-row/index.js | 0
.../send-asset-row.component.js | 0
.../send-asset-row.container.js | 0
.../send-content/send-content.component.js | 0
.../send-content.component.test.js | 0
.../send-content/send-content.container.js | 0
.../gas-fee-display.component.js | 0
.../gas-fee-display.component.test.js | 0
.../send-gas-row/gas-fee-display/index.js | 0
.../send/send-content/send-gas-row/index.js | 0
.../send-gas-row/send-gas-row.component.js | 0
.../send-gas-row.component.test.js | 0
.../send-gas-row/send-gas-row.container.js | 0
.../send-gas-row.container.test.js | 8 +-
.../send-gas-row/send-gas-row.scss | 0
.../send-content/send-hex-data-row/index.js | 0
.../send-hex-data-row.component.js | 0
.../send-hex-data-row.container.js | 0
.../send-content/send-row-wrapper/index.js | 0
.../send-row-error-message/index.js | 0
.../send-row-error-message.component.js | 0
.../send-row-error-message.component.test.js | 0
.../send-row-error-message.container.js | 0
.../send-row-error-message.container.test.js | 0
.../send-row-error-message.scss | 0
.../send-row-wrapper.component.js | 0
.../send-row-wrapper.component.test.js | 0
.../send-row-wrapper/send-row-wrapper.scss | 0
ui/{app => }/pages/send/send-footer/index.js | 0
.../send/send-footer/send-footer.component.js | 0
.../send-footer/send-footer.component.test.js | 0
.../send/send-footer/send-footer.container.js | 2 +-
.../send-footer/send-footer.container.test.js | 6 +-
.../pages/send/send-footer/send-footer.scss | 0
.../send/send-footer/send-footer.utils.js | 2 +-
.../send-footer/send-footer.utils.test.js | 0
ui/{app => }/pages/send/send-header/index.js | 0
.../send/send-header/send-header.component.js | 0
.../send-header/send-header.component.test.js | 0
.../send/send-header/send-header.container.js | 0
ui/{app => }/pages/send/send.component.js | 2 +-
.../pages/send/send.component.test.js | 2 +-
ui/{app => }/pages/send/send.constants.js | 2 +-
ui/{app => }/pages/send/send.container.js | 0
.../pages/send/send.container.test.js | 4 +-
ui/{app => }/pages/send/send.scss | 0
ui/{app => }/pages/send/send.utils.js | 2 +-
ui/{app => }/pages/send/send.utils.test.js | 4 +-
.../advanced-tab/advanced-tab.component.js | 4 +-
.../advanced-tab.component.test.js | 0
.../advanced-tab/advanced-tab.container.js | 0
.../pages/settings/advanced-tab/index.js | 0
.../pages/settings/alerts-tab/alerts-tab.js | 2 +-
.../pages/settings/alerts-tab/alerts-tab.scss | 0
.../pages/settings/alerts-tab/index.js | 0
.../add-contact/add-contact.component.js | 2 +-
.../add-contact/add-contact.container.js | 0
.../contact-list-tab/add-contact/index.js | 0
.../contact-list-tab.component.js | 0
.../contact-list-tab.container.js | 4 +-
.../edit-contact/edit-contact.component.js | 2 +-
.../edit-contact/edit-contact.container.js | 0
.../contact-list-tab/edit-contact/index.js | 0
.../pages/settings/contact-list-tab/index.js | 0
.../settings/contact-list-tab/index.scss | 0
.../contact-list-tab/view-contact/index.js | 0
.../view-contact/view-contact.component.js | 0
.../view-contact/view-contact.container.js | 2 +-
ui/{app => }/pages/settings/index.js | 0
ui/{app => }/pages/settings/index.scss | 0
ui/{app => }/pages/settings/info-tab/index.js | 0
.../pages/settings/info-tab/index.scss | 0
.../settings/info-tab/info-tab.component.js | 0
.../pages/settings/networks-tab/index.js | 0
.../pages/settings/networks-tab/index.scss | 0
.../networks-tab/network-form/index.js | 0
.../network-form/network-form.component.js | 4 +-
.../networks-tab/networks-tab.component.js | 2 +-
.../networks-tab/networks-tab.constants.js | 2 +-
.../networks-tab/networks-tab.container.js | 6 +-
.../pages/settings/security-tab/index.js | 0
.../security-tab/security-tab.component.js | 0
.../security-tab/security-tab.container.js | 0
.../security-tab.container.test.js | 0
.../pages/settings/settings-tab/index.js | 0
.../pages/settings/settings-tab/index.scss | 0
.../settings-tab/settings-tab.component.js | 2 +-
.../settings-tab/settings-tab.container.js | 0
.../settings-tab.container.test.js | 0
.../pages/settings/settings.component.js | 0
.../pages/settings/settings.container.js | 6 +-
.../swaps/__snapshots__/index.test.js.snap | 0
.../actionable-message.test.js.snap | 0
.../actionable-message/actionable-message.js | 0
.../actionable-message.stories.js | 0
.../actionable-message.test.js | 2 +-
.../pages/swaps/actionable-message/index.js | 0
.../pages/swaps/actionable-message/index.scss | 0
.../__snapshots__/awaiting-swap.test.js.snap | 0
.../quotes-timeout-icon.test.js.snap | 0
.../swap-failure-icon.test.js.snap | 0
.../swap-success-icon.test.js.snap | 0
.../swaps/awaiting-swap/awaiting-swap.js | 8 +-
.../swaps/awaiting-swap/awaiting-swap.test.js | 2 +-
.../pages/swaps/awaiting-swap/index.js | 0
.../pages/swaps/awaiting-swap/index.scss | 0
.../awaiting-swap/quotes-timeout-icon.js | 0
.../awaiting-swap/quotes-timeout-icon.test.js | 2 +-
.../swaps/awaiting-swap/swap-failure-icon.js | 0
.../awaiting-swap/swap-failure-icon.test.js | 2 +-
.../swaps/awaiting-swap/swap-success-icon.js | 0
.../awaiting-swap/swap-success-icon.test.js | 2 +-
.../view-on-ether-scan-link.test.js.snap | 0
.../view-on-ether-scan-link/index.js | 0
.../view-on-ether-scan-link.js | 0
.../view-on-ether-scan-link.test.js | 2 +-
.../__snapshots__/build-quote.test.js.snap | 0
.../pages/swaps/build-quote/build-quote.js | 4 +-
.../swaps/build-quote/build-quote.stories.js | 0
.../swaps/build-quote/build-quote.test.js | 2 +-
ui/{app => }/pages/swaps/build-quote/index.js | 0
.../pages/swaps/build-quote/index.scss | 0
.../swaps/countdown-timer/countdown-timer.js | 0
.../countdown-timer.stories.js | 0
.../countdown-timer/countdown-timer.test.js | 2 +-
.../pages/swaps/countdown-timer/index.js | 0
.../pages/swaps/countdown-timer/index.scss | 0
.../dropdown-input-pair.test.js.snap | 0
.../dropdown-input-pair.js | 0
.../dropdown-input-pair.stories.js | 0
.../dropdown-input-pair.test.js | 2 +-
.../pages/swaps/dropdown-input-pair/index.js | 0
.../swaps/dropdown-input-pair/index.scss | 0
.../dropdown-search-list.test.js.snap | 0
.../dropdown-search-list.js | 0
.../dropdown-search-list.stories.js | 0
.../dropdown-search-list.test.js | 2 +-
.../pages/swaps/dropdown-search-list/index.js | 0
.../swaps/dropdown-search-list/index.scss | 0
.../exchange-rate-display.test.js.snap | 0
.../exchange-rate-display.js | 0
.../exchange-rate-display.stories.js | 0
.../exchange-rate-display.test.js | 2 +-
.../swaps/exchange-rate-display/index.js | 0
.../swaps/exchange-rate-display/index.scss | 0
.../__snapshots__/fee-card.test.js.snap | 0
ui/{app => }/pages/swaps/fee-card/fee-card.js | 2 +-
.../pages/swaps/fee-card/fee-card.stories.js | 0
.../pages/swaps/fee-card/fee-card.test.js | 4 +-
ui/{app => }/pages/swaps/fee-card/index.js | 0
ui/{app => }/pages/swaps/fee-card/index.scss | 0
ui/{app => }/pages/swaps/fee-card/pig-icon.js | 0
.../pages/swaps/fee-card/pig-icon.test.js | 2 +-
ui/{app => }/pages/swaps/index.js | 4 +-
ui/{app => }/pages/swaps/index.scss | 0
ui/{app => }/pages/swaps/index.test.js | 2 +-
.../__snapshots__/intro-popup.test.js.snap | 9 ++
ui/pages/swaps/intro-popup/index.js | 1 +
ui/pages/swaps/intro-popup/index.scss | 71 ++++++++++++
ui/pages/swaps/intro-popup/intro-popup.js | 108 ++++++++++++++++++
.../swaps/intro-popup/intro-popup.test.js | 24 ++++
.../aggregator-logo.test.js.snap | 0
...swaps-quotes-stories-metadata.test.js.snap | 0
.../loading-swaps-quotes/aggregator-logo.js | 0
.../aggregator-logo.test.js | 2 +-
.../background-animation.js | 0
.../background-animation.test.js | 2 +-
.../pages/swaps/loading-swaps-quotes/index.js | 0
.../swaps/loading-swaps-quotes/index.scss | 0
.../loading-swaps-quotes-stories-metadata.js | 0
...ding-swaps-quotes-stories-metadata.test.js | 0
.../loading-swaps-quotes.js | 0
.../main-quote-summary.test.js.snap | 0
.../__snapshots__/quote-backdrop.test.js.snap | 0
.../pages/swaps/main-quote-summary/index.js | 0
.../pages/swaps/main-quote-summary/index.scss | 0
.../main-quote-summary/main-quote-summary.js | 0
.../main-quote-summary.stories.js | 0
.../main-quote-summary.test.js | 2 +-
.../main-quote-summary/quote-backdrop.js | 0
.../main-quote-summary/quote-backdrop.test.js | 2 +-
.../searchable-item-list.test.js.snap | 0
.../pages/swaps/searchable-item-list/index.js | 0
.../swaps/searchable-item-list/index.scss | 0
.../searchable-item-list/item-list/index.js | 0
.../item-list/item-list.component.js | 0
.../list-item-search/index.js | 0
.../list-item-search.component.js | 0
.../searchable-item-list.js | 0
.../searchable-item-list.test.js | 2 +-
.../select-quote-popover.test.js.snap | 0
.../pages/swaps/select-quote-popover/index.js | 0
.../swaps/select-quote-popover/index.scss | 0
.../select-quote-popover/mock-quote-data.js | 0
.../mock-quote-data.test.js | 0
.../quote-details/index.js | 0
.../quote-details/index.scss | 0
.../quote-details/quote-details.js | 0
.../select-quote-popover-constants.js | 0
.../select-quote-popover.js | 0
.../select-quote-popover.stories.js | 0
.../select-quote-popover.test.js | 2 +-
.../__snapshots__/sort-list.test.js.snap | 0
.../select-quote-popover/sort-list/index.js | 0
.../sort-list/sort-list.js | 0
.../sort-list/sort-list.test.js | 2 +-
.../slippage-buttons.test.js.snap | 0
.../pages/swaps/slippage-buttons/index.js | 0
.../pages/swaps/slippage-buttons/index.scss | 0
.../slippage-buttons/slippage-buttons.js | 0
.../slippage-buttons.stories.js | 0
.../slippage-buttons/slippage-buttons.test.js | 2 +-
.../__snapshots__/swaps-footer.test.js.snap | 0
.../pages/swaps/swaps-footer/index.js | 0
.../pages/swaps/swaps-footer/index.scss | 0
.../pages/swaps/swaps-footer/swaps-footer.js | 0
.../swaps/swaps-footer/swaps-footer.test.js | 2 +-
.../swaps-gas-customization-modal/index.js | 0
...swaps-gas-customization-modal.component.js | 0
...swaps-gas-customization-modal.container.js | 0
.../pages/swaps/swaps-util-test-constants.js | 2 +-
ui/{app => }/pages/swaps/swaps.util.js | 8 +-
ui/{app => }/pages/swaps/swaps.util.test.js | 6 +-
ui/{app => }/pages/swaps/view-quote/index.js | 0
.../pages/swaps/view-quote/index.scss | 0
.../view-quote/view-quote-price-difference.js | 0
.../view-quote-price-difference.test.js | 2 +-
.../pages/swaps/view-quote/view-quote.js | 2 +-
ui/{app => }/pages/unlock-page/index.js | 0
ui/{app => }/pages/unlock-page/index.scss | 0
.../unlock-page/unlock-page.component.js | 0
.../unlock-page/unlock-page.component.test.js | 2 +-
.../unlock-page/unlock-page.container.js | 4 +-
.../unlock-page/unlock-page.container.test.js | 0
ui/{app => }/selectors/confirm-transaction.js | 4 +-
.../selectors/confirm-transaction.test.js | 4 +-
ui/{app => }/selectors/custom-gas.js | 2 +-
ui/{app => }/selectors/custom-gas.test.js | 0
ui/{app => }/selectors/first-time-flow.js | 0
ui/{app => }/selectors/index.js | 0
ui/{app => }/selectors/permissions.js | 2 +-
ui/{app => }/selectors/permissions.test.js | 2 +-
ui/{app => }/selectors/selectors.js | 8 +-
ui/{app => }/selectors/selectors.test.js | 2 +-
.../selectors/send-selectors-test-data.js | 2 +-
ui/{app => }/selectors/send.js | 0
ui/{app => }/selectors/send.test.js | 2 +-
ui/{app => }/selectors/transactions.js | 6 +-
ui/{app => }/selectors/transactions.test.js | 4 +-
ui/{app => }/store/actionConstants.js | 0
ui/{app => }/store/actionConstants.test.js | 2 +-
ui/{app => }/store/actions.js | 23 ++--
ui/{app => }/store/actions.test.js | 6 +-
ui/{app => }/store/store.js | 0
1172 files changed, 615 insertions(+), 411 deletions(-)
rename ui/{app => }/__mocks__/react-router-dom.js (100%)
delete mode 100644 ui/app/components/app/signature-request/signature-request.constants.js
rename ui/{app => }/components/app/account-list-item/account-list-item-component.test.js (96%)
rename ui/{app => }/components/app/account-list-item/account-list-item.js (93%)
rename ui/{app => }/components/app/account-list-item/index.js (100%)
rename ui/{app => }/components/app/account-list-item/index.scss (100%)
rename ui/{app => }/components/app/account-menu/account-menu.component.js (98%)
rename ui/{app => }/components/app/account-menu/account-menu.container.js (100%)
rename ui/{app => }/components/app/account-menu/account-menu.test.js (98%)
rename ui/{app => }/components/app/account-menu/index.js (100%)
rename ui/{app => }/components/app/account-menu/index.scss (100%)
rename ui/{app => }/components/app/add-token-button/add-token-button.component.js (100%)
rename ui/{app => }/components/app/add-token-button/index.js (100%)
rename ui/{app => }/components/app/add-token-button/index.scss (100%)
rename ui/{app => }/components/app/alerts/alerts.js (100%)
rename ui/{app => }/components/app/alerts/alerts.scss (100%)
rename ui/{app => }/components/app/alerts/index.js (100%)
rename ui/{app => }/components/app/alerts/invalid-custom-network-alert/index.js (100%)
rename ui/{app => }/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.js (100%)
rename ui/{app => }/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.scss (100%)
rename ui/{app => }/components/app/alerts/unconnected-account-alert/index.js (100%)
rename ui/{app => }/components/app/alerts/unconnected-account-alert/unconnected-account-alert.js (100%)
rename ui/{app => }/components/app/alerts/unconnected-account-alert/unconnected-account-alert.scss (100%)
rename ui/{app => }/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js (95%)
rename ui/{app => }/components/app/app-components.scss (100%)
rename ui/{app => }/components/app/app-header/app-header.component.js (100%)
rename ui/{app => }/components/app/app-header/app-header.container.js (100%)
rename ui/{app => }/components/app/app-header/app-header.test.js (100%)
rename ui/{app => }/components/app/app-header/index.js (100%)
rename ui/{app => }/components/app/app-header/index.scss (100%)
rename ui/{app => }/components/app/asset-list-item/asset-list-item.js (100%)
rename ui/{app => }/components/app/asset-list-item/asset-list-item.scss (100%)
rename ui/{app => }/components/app/asset-list-item/index.js (100%)
rename ui/{app => }/components/app/asset-list/asset-list.js (100%)
rename ui/{app => }/components/app/asset-list/index.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.test.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-detail-row/index.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-detail-row/index.scss (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/confirm-page-container-summary.component.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.scss (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/confirm-page-container-warning.component.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.scss (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-content/index.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-content/index.scss (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js (94%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js (93%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-header/index.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-header/index.scss (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-navigation/index.js (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container-navigation/index.scss (100%)
rename ui/{app => }/components/app/confirm-page-container/confirm-page-container.component.js (100%)
rename ui/{app => }/components/app/confirm-page-container/index.js (100%)
rename ui/{app => }/components/app/confirm-page-container/index.scss (100%)
rename ui/{app => }/components/app/connected-accounts-list/connected-accounts-list-item/connected-accounts-list-item.component.js (100%)
rename ui/{app => }/components/app/connected-accounts-list/connected-accounts-list-item/index.js (100%)
rename ui/{app => }/components/app/connected-accounts-list/connected-accounts-list-options/connected-accounts-list-options.component.js (100%)
rename ui/{app => }/components/app/connected-accounts-list/connected-accounts-list-options/index.js (100%)
rename ui/{app => }/components/app/connected-accounts-list/connected-accounts-list.component.js (100%)
rename ui/{app => }/components/app/connected-accounts-list/index.js (100%)
rename ui/{app => }/components/app/connected-accounts-list/index.scss (100%)
rename ui/{app => }/components/app/connected-accounts-permissions/connected-accounts-permissions.component.js (100%)
rename ui/{app => }/components/app/connected-accounts-permissions/index.js (100%)
rename ui/{app => }/components/app/connected-accounts-permissions/index.scss (100%)
rename ui/{app => }/components/app/connected-sites-list/connected-sites-list.component.js (100%)
rename ui/{app => }/components/app/connected-sites-list/index.js (100%)
rename ui/{app => }/components/app/connected-sites-list/index.scss (100%)
rename ui/{app => }/components/app/connected-status-indicator/connected-status-indicator.js (100%)
rename ui/{app => }/components/app/connected-status-indicator/index.js (100%)
rename ui/{app => }/components/app/connected-status-indicator/index.scss (100%)
rename ui/{app => }/components/app/contact-list/contact-list.component.js (100%)
rename ui/{app => }/components/app/contact-list/index.js (100%)
rename ui/{app => }/components/app/contact-list/recipient-group/index.js (100%)
rename ui/{app => }/components/app/contact-list/recipient-group/recipient-group.component.js (100%)
rename ui/{app => }/components/app/dropdowns/dropdown.js (100%)
rename ui/{app => }/components/app/dropdowns/dropdown.test.js (100%)
rename ui/{app => }/components/app/dropdowns/network-dropdown.js (96%)
rename ui/{app => }/components/app/dropdowns/network-dropdown.test.js (98%)
rename ui/{app => }/components/app/gas-customization/advanced-gas-inputs/advanced-gas-input-component.test.js (100%)
rename ui/{app => }/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.component.js (100%)
rename ui/{app => }/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.container.js (100%)
rename ui/{app => }/components/app/gas-customization/advanced-gas-inputs/index.js (100%)
rename ui/{app => }/components/app/gas-customization/advanced-gas-inputs/index.scss (100%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js (94%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.scss (100%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js (96%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content.component.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.scss (100%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js (95%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js (97%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js (98%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/index.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-modal-page-container/index.scss (100%)
rename ui/{app => }/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js (93%)
rename ui/{app => }/components/app/gas-customization/gas-price-button-group/gas-price-button-group.component.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-price-button-group/index.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-price-button-group/index.scss (100%)
rename ui/{app => }/components/app/gas-customization/gas-slider/gas-slider.component.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-slider/index.js (100%)
rename ui/{app => }/components/app/gas-customization/gas-slider/index.scss (100%)
rename ui/{app => }/components/app/gas-customization/index.scss (100%)
rename ui/{app => }/components/app/home-notification/home-notification.component.js (100%)
rename ui/{app => }/components/app/home-notification/index.js (100%)
rename ui/{app => }/components/app/home-notification/index.scss (100%)
rename ui/{app => }/components/app/info-box/index.js (100%)
rename ui/{app => }/components/app/info-box/index.scss (100%)
rename ui/{app => }/components/app/info-box/info-box.component.js (100%)
rename ui/{app => }/components/app/info-box/info-box.test.js (100%)
rename ui/{app => }/components/app/loading-network-screen/index.js (100%)
rename ui/{app => }/components/app/loading-network-screen/loading-network-screen.component.js (100%)
rename ui/{app => }/components/app/loading-network-screen/loading-network-screen.container.js (93%)
rename ui/{app => }/components/app/menu-bar/account-options-menu.js (95%)
rename ui/{app => }/components/app/menu-bar/index.js (100%)
rename ui/{app => }/components/app/menu-bar/index.scss (100%)
rename ui/{app => }/components/app/menu-bar/menu-bar.js (92%)
rename ui/{app => }/components/app/menu-bar/menu-bar.test.js (92%)
rename ui/{app => }/components/app/menu-droppo.js (100%)
rename ui/{app => }/components/app/metamask-template-renderer/index.js (100%)
rename ui/{app => }/components/app/metamask-template-renderer/metamask-template-renderer.js (100%)
rename ui/{app => }/components/app/metamask-template-renderer/metamask-template-renderer.stories.js (100%)
rename ui/{app => }/components/app/metamask-template-renderer/safe-component-list.js (100%)
rename ui/{app => }/components/app/metamask-translation/index.js (100%)
rename ui/{app => }/components/app/metamask-translation/metamask-translation.js (100%)
rename ui/{app => }/components/app/metamask-translation/metamask-translation.stories.js (95%)
rename ui/{app => }/components/app/modal/index.js (100%)
rename ui/{app => }/components/app/modal/index.scss (100%)
rename ui/{app => }/components/app/modal/modal-content/index.js (100%)
rename ui/{app => }/components/app/modal/modal-content/index.scss (100%)
rename ui/{app => }/components/app/modal/modal-content/modal-content.component.js (100%)
rename ui/{app => }/components/app/modal/modal-content/modal-content.component.test.js (100%)
rename ui/{app => }/components/app/modal/modal.component.js (100%)
rename ui/{app => }/components/app/modal/modal.component.test.js (100%)
rename ui/{app => }/components/app/modals/account-details-modal/account-details-modal.component.js (97%)
rename ui/{app => }/components/app/modals/account-details-modal/account-details-modal.container.js (100%)
rename ui/{app => }/components/app/modals/account-details-modal/account-details-modal.test.js (100%)
rename ui/{app => }/components/app/modals/account-details-modal/index.js (100%)
rename ui/{app => }/components/app/modals/account-details-modal/index.scss (100%)
rename ui/{app => }/components/app/modals/account-modal-container/account-modal-container.component.js (100%)
rename ui/{app => }/components/app/modals/account-modal-container/account-modal-container.container.js (100%)
rename ui/{app => }/components/app/modals/account-modal-container/index.js (100%)
rename ui/{app => }/components/app/modals/account-modal-container/index.scss (100%)
rename ui/{app => }/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.component.js (100%)
rename ui/{app => }/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.container.js (100%)
rename ui/{app => }/components/app/modals/add-to-addressbook-modal/index.js (100%)
rename ui/{app => }/components/app/modals/add-to-addressbook-modal/index.scss (100%)
rename ui/{app => }/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.js (100%)
rename ui/{app => }/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.test.js (100%)
rename ui/{app => }/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.js (100%)
rename ui/{app => }/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.scss (100%)
rename ui/{app => }/components/app/modals/cancel-transaction/cancel-transaction.component.js (95%)
rename ui/{app => }/components/app/modals/cancel-transaction/cancel-transaction.component.test.js (100%)
rename ui/{app => }/components/app/modals/cancel-transaction/cancel-transaction.container.js (100%)
rename ui/{app => }/components/app/modals/cancel-transaction/index.js (100%)
rename ui/{app => }/components/app/modals/cancel-transaction/index.scss (100%)
rename ui/{app => }/components/app/modals/confirm-delete-network/confirm-delete-network.component.js (100%)
rename ui/{app => }/components/app/modals/confirm-delete-network/confirm-delete-network.container.js (100%)
rename ui/{app => }/components/app/modals/confirm-delete-network/confirm-delete-network.test.js (100%)
rename ui/{app => }/components/app/modals/confirm-delete-network/index.js (100%)
rename ui/{app => }/components/app/modals/confirm-remove-account/confirm-remove-account.component.js (97%)
rename ui/{app => }/components/app/modals/confirm-remove-account/confirm-remove-account.container.js (100%)
rename ui/{app => }/components/app/modals/confirm-remove-account/confirm-remove-account.test.js (100%)
rename ui/{app => }/components/app/modals/confirm-remove-account/index.js (100%)
rename ui/{app => }/components/app/modals/confirm-remove-account/index.scss (100%)
rename ui/{app => }/components/app/modals/confirm-reset-account/confirm-reset-account.component.js (100%)
rename ui/{app => }/components/app/modals/confirm-reset-account/confirm-reset-account.container.js (100%)
rename ui/{app => }/components/app/modals/confirm-reset-account/confirm-reset-account.test.js (100%)
rename ui/{app => }/components/app/modals/confirm-reset-account/index.js (100%)
rename ui/{app => }/components/app/modals/customize-nonce/customize-nonce.component.js (100%)
rename ui/{app => }/components/app/modals/customize-nonce/index.js (100%)
rename ui/{app => }/components/app/modals/customize-nonce/index.scss (100%)
rename ui/{app => }/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js (98%)
rename ui/{app => }/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js (100%)
rename ui/{app => }/components/app/modals/deposit-ether-modal/index.js (100%)
rename ui/{app => }/components/app/modals/deposit-ether-modal/index.scss (100%)
rename ui/{app => }/components/app/modals/edit-approval-permission/edit-approval-permission.component.js (100%)
rename ui/{app => }/components/app/modals/edit-approval-permission/edit-approval-permission.container.js (100%)
rename ui/{app => }/components/app/modals/edit-approval-permission/index.js (100%)
rename ui/{app => }/components/app/modals/edit-approval-permission/index.scss (100%)
rename ui/{app => }/components/app/modals/export-private-key-modal/export-private-key-modal.component.js (98%)
rename ui/{app => }/components/app/modals/export-private-key-modal/export-private-key-modal.container.js (100%)
rename ui/{app => }/components/app/modals/export-private-key-modal/index.js (100%)
rename ui/{app => }/components/app/modals/export-private-key-modal/index.scss (100%)
rename ui/{app => }/components/app/modals/fade-modal.js (100%)
rename ui/{app => }/components/app/modals/hide-token-confirmation-modal/hide-token-confirmation-modal.js (100%)
rename ui/{app => }/components/app/modals/hide-token-confirmation-modal/index.js (100%)
rename ui/{app => }/components/app/modals/hide-token-confirmation-modal/index.scss (100%)
rename ui/{app => }/components/app/modals/index.js (100%)
rename ui/{app => }/components/app/modals/index.scss (100%)
rename ui/{app => }/components/app/modals/loading-network-error/index.js (100%)
rename ui/{app => }/components/app/modals/loading-network-error/loading-network-error.component.js (100%)
rename ui/{app => }/components/app/modals/loading-network-error/loading-network-error.container.js (100%)
rename ui/{app => }/components/app/modals/metametrics-opt-in-modal/index.js (100%)
rename ui/{app => }/components/app/modals/metametrics-opt-in-modal/index.scss (100%)
rename ui/{app => }/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js (100%)
rename ui/{app => }/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.container.js (100%)
rename ui/{app => }/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js (95%)
rename ui/{app => }/components/app/modals/modal.js (98%)
rename ui/{app => }/components/app/modals/new-account-modal/index.js (100%)
rename ui/{app => }/components/app/modals/new-account-modal/index.scss (100%)
rename ui/{app => }/components/app/modals/new-account-modal/new-account-modal.component.js (100%)
rename ui/{app => }/components/app/modals/new-account-modal/new-account-modal.container.js (100%)
rename ui/{app => }/components/app/modals/qr-scanner/index.js (100%)
rename ui/{app => }/components/app/modals/qr-scanner/index.scss (100%)
rename ui/{app => }/components/app/modals/qr-scanner/qr-scanner.component.js (97%)
rename ui/{app => }/components/app/modals/qr-scanner/qr-scanner.container.js (100%)
rename ui/{app => }/components/app/modals/reject-transactions/index.js (100%)
rename ui/{app => }/components/app/modals/reject-transactions/index.scss (100%)
rename ui/{app => }/components/app/modals/reject-transactions/reject-transactions.component.js (100%)
rename ui/{app => }/components/app/modals/reject-transactions/reject-transactions.container.js (100%)
rename ui/{app => }/components/app/modals/reject-transactions/reject-transactions.test.js (100%)
rename ui/{app => }/components/app/modals/transaction-confirmed/index.js (100%)
rename ui/{app => }/components/app/modals/transaction-confirmed/index.scss (100%)
rename ui/{app => }/components/app/modals/transaction-confirmed/transaction-confirmed.component.js (100%)
rename ui/{app => }/components/app/modals/transaction-confirmed/transaction-confirmed.container.js (100%)
rename ui/{app => }/components/app/modals/transaction-confirmed/transaction-confirmed.test.js (100%)
rename ui/{app => }/components/app/multiple-notifications/index.js (100%)
rename ui/{app => }/components/app/multiple-notifications/index.scss (100%)
rename ui/{app => }/components/app/multiple-notifications/multiple-notifications.component.js (100%)
rename ui/{app => }/components/app/network-display/index.js (100%)
rename ui/{app => }/components/app/network-display/index.scss (100%)
rename ui/{app => }/components/app/network-display/network-display.js (98%)
rename ui/{app => }/components/app/permission-page-container/index.js (100%)
rename ui/{app => }/components/app/permission-page-container/index.scss (100%)
rename ui/{app => }/components/app/permission-page-container/permission-page-container-content/index.js (100%)
rename ui/{app => }/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js (100%)
rename ui/{app => }/components/app/permission-page-container/permission-page-container.component.js (100%)
rename ui/{app => }/components/app/permission-page-container/permission-page-container.container.js (100%)
rename ui/{app => }/components/app/permissions-connect-footer/index.js (100%)
rename ui/{app => }/components/app/permissions-connect-footer/index.scss (100%)
rename ui/{app => }/components/app/permissions-connect-footer/permissions-connect-footer.component.js (100%)
rename ui/{app => }/components/app/permissions-connect-header/index.js (100%)
rename ui/{app => }/components/app/permissions-connect-header/index.scss (100%)
rename ui/{app => }/components/app/permissions-connect-header/permissions-connect-header.component.js (100%)
rename ui/{app => }/components/app/selected-account/index.js (100%)
rename ui/{app => }/components/app/selected-account/index.scss (100%)
rename ui/{app => }/components/app/selected-account/selected-account-component.test.js (100%)
rename ui/{app => }/components/app/selected-account/selected-account.component.js (95%)
rename ui/{app => }/components/app/selected-account/selected-account.container.js (100%)
rename ui/{app => }/components/app/sidebars/index.js (100%)
rename ui/{app => }/components/app/sidebars/index.scss (100%)
rename ui/{app => }/components/app/sidebars/sidebar-content.scss (100%)
rename ui/{app => }/components/app/sidebars/sidebar.component.js (100%)
rename ui/{app => }/components/app/sidebars/sidebar.component.test.js (100%)
rename ui/{app => }/components/app/signature-request-original/index.js (100%)
rename ui/{app => }/components/app/signature-request-original/index.scss (100%)
rename ui/{app => }/components/app/signature-request-original/signature-request-original.component.js (98%)
rename ui/{app => }/components/app/signature-request-original/signature-request-original.container.js (96%)
rename ui/{app => }/components/app/signature-request/index.js (100%)
rename ui/{app => }/components/app/signature-request/index.scss (100%)
rename ui/{app => }/components/app/signature-request/signature-request-footer/index.js (100%)
rename ui/{app => }/components/app/signature-request/signature-request-footer/index.scss (100%)
rename ui/{app => }/components/app/signature-request/signature-request-footer/signature-request-footer.component.js (100%)
rename ui/{app => }/components/app/signature-request/signature-request-header/index.js (100%)
rename ui/{app => }/components/app/signature-request/signature-request-header/index.scss (100%)
rename ui/{app => }/components/app/signature-request/signature-request-header/signature-request-header.component.js (100%)
rename ui/{app => }/components/app/signature-request/signature-request-message/index.js (100%)
rename ui/{app => }/components/app/signature-request/signature-request-message/index.scss (100%)
rename ui/{app => }/components/app/signature-request/signature-request-message/signature-request-message.component.js (100%)
rename ui/{app => }/components/app/signature-request/signature-request.component.js (97%)
rename ui/{app => }/components/app/signature-request/signature-request.component.test.js (87%)
create mode 100644 ui/components/app/signature-request/signature-request.constants.js
rename ui/{app => }/components/app/signature-request/signature-request.container.js (95%)
rename ui/{app => }/components/app/signature-request/signature-request.container.test.js (97%)
rename ui/{app => }/components/app/signature-request/signature-request.stories.js (93%)
rename ui/{app => }/components/app/tab-bar/index.js (100%)
rename ui/{app => }/components/app/tab-bar/index.scss (100%)
rename ui/{app => }/components/app/tab-bar/tab-bar.js (100%)
rename ui/{app => }/components/app/token-cell/index.js (100%)
rename ui/{app => }/components/app/token-cell/token-cell.js (100%)
rename ui/{app => }/components/app/token-cell/token-cell.scss (100%)
rename ui/{app => }/components/app/token-cell/token-cell.test.js (100%)
rename ui/{app => }/components/app/token-list/index.js (100%)
rename ui/{app => }/components/app/token-list/token-list.js (100%)
rename ui/{app => }/components/app/transaction-activity-log/index.js (100%)
rename ui/{app => }/components/app/transaction-activity-log/index.scss (100%)
rename ui/{app => }/components/app/transaction-activity-log/transaction-activity-log-icon/index.js (100%)
rename ui/{app => }/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.component.js (100%)
rename ui/{app => }/components/app/transaction-activity-log/transaction-activity-log.component.js (97%)
rename ui/{app => }/components/app/transaction-activity-log/transaction-activity-log.component.test.js (100%)
rename ui/{app => }/components/app/transaction-activity-log/transaction-activity-log.constants.js (100%)
rename ui/{app => }/components/app/transaction-activity-log/transaction-activity-log.container.js (100%)
rename ui/{app => }/components/app/transaction-activity-log/transaction-activity-log.container.test.js (100%)
rename ui/{app => }/components/app/transaction-activity-log/transaction-activity-log.util.js (99%)
rename ui/{app => }/components/app/transaction-activity-log/transaction-activity-log.util.test.js (99%)
rename ui/{app => }/components/app/transaction-breakdown/index.js (100%)
rename ui/{app => }/components/app/transaction-breakdown/index.scss (100%)
rename ui/{app => }/components/app/transaction-breakdown/transaction-breakdown-row/index.js (100%)
rename ui/{app => }/components/app/transaction-breakdown/transaction-breakdown-row/index.scss (100%)
rename ui/{app => }/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.js (100%)
rename ui/{app => }/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.test.js (100%)
rename ui/{app => }/components/app/transaction-breakdown/transaction-breakdown.component.js (100%)
rename ui/{app => }/components/app/transaction-breakdown/transaction-breakdown.component.test.js (91%)
rename ui/{app => }/components/app/transaction-breakdown/transaction-breakdown.container.js (100%)
rename ui/{app => }/components/app/transaction-icon/index.js (100%)
rename ui/{app => }/components/app/transaction-icon/transaction-icon.js (97%)
rename ui/{app => }/components/app/transaction-icon/transaction-icon.scss (100%)
rename ui/{app => }/components/app/transaction-list-item-details/index.js (100%)
rename ui/{app => }/components/app/transaction-list-item-details/index.scss (100%)
rename ui/{app => }/components/app/transaction-list-item-details/transaction-list-item-details.component.js (98%)
rename ui/{app => }/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js (98%)
rename ui/{app => }/components/app/transaction-list-item-details/transaction-list-item-details.container.js (94%)
rename ui/{app => }/components/app/transaction-list-item/index.js (100%)
rename ui/{app => }/components/app/transaction-list-item/index.scss (100%)
rename ui/{app => }/components/app/transaction-list-item/transaction-list-item.component.js (99%)
rename ui/{app => }/components/app/transaction-list/index.js (100%)
rename ui/{app => }/components/app/transaction-list/index.scss (100%)
rename ui/{app => }/components/app/transaction-list/transaction-list.component.js (98%)
rename ui/{app => }/components/app/transaction-status/index.js (100%)
rename ui/{app => }/components/app/transaction-status/index.scss (100%)
rename ui/{app => }/components/app/transaction-status/transaction-status.component.js (97%)
rename ui/{app => }/components/app/transaction-status/transaction-status.component.test.js (100%)
rename ui/{app => }/components/app/user-preferenced-currency-display/index.js (100%)
rename ui/{app => }/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js (100%)
rename ui/{app => }/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.test.js (100%)
rename ui/{app => }/components/app/user-preferenced-currency-input/index.js (100%)
rename ui/{app => }/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.js (100%)
rename ui/{app => }/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.test.js (100%)
rename ui/{app => }/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.js (100%)
rename ui/{app => }/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.test.js (100%)
rename ui/{app => }/components/app/user-preferenced-token-input/index.js (100%)
rename ui/{app => }/components/app/user-preferenced-token-input/user-preferenced-token-input.component.js (100%)
rename ui/{app => }/components/app/user-preferenced-token-input/user-preferenced-token-input.component.test.js (100%)
rename ui/{app => }/components/app/user-preferenced-token-input/user-preferenced-token-input.container.js (100%)
rename ui/{app => }/components/app/user-preferenced-token-input/user-preferenced-token-input.container.test.js (100%)
rename ui/{app => }/components/app/wallet-overview/eth-overview.js (100%)
rename ui/{app => }/components/app/wallet-overview/index.js (100%)
rename ui/{app => }/components/app/wallet-overview/index.scss (100%)
rename ui/{app => }/components/app/wallet-overview/token-overview.js (100%)
rename ui/{app => }/components/app/wallet-overview/wallet-overview.js (100%)
rename ui/{app => }/components/app/whats-new-popup/index.js (100%)
rename ui/{app => }/components/app/whats-new-popup/index.scss (100%)
rename ui/{app => }/components/app/whats-new-popup/whats-new-popup.js (98%)
rename ui/{app => }/components/ui/account-mismatch-warning/acccount-mismatch-warning.component.test.js (100%)
rename ui/{app => }/components/ui/account-mismatch-warning/account-mismatch-warning.component.js (100%)
rename ui/{app => }/components/ui/account-mismatch-warning/index.scss (100%)
rename ui/{app => }/components/ui/alert-circle-icon/alert-circle-icon.component.js (100%)
rename ui/{app => }/components/ui/alert-circle-icon/alert-circle-icon.stories.js (100%)
rename ui/{app => }/components/ui/alert-circle-icon/index.js (100%)
rename ui/{app => }/components/ui/alert-circle-icon/index.scss (100%)
rename ui/{app => }/components/ui/alert/index.js (100%)
rename ui/{app => }/components/ui/alert/index.scss (100%)
rename ui/{app => }/components/ui/alert/index.test.js (100%)
rename ui/{app => }/components/ui/box/box.js (100%)
rename ui/{app => }/components/ui/box/box.scss (100%)
rename ui/{app => }/components/ui/box/box.stories.js (100%)
rename ui/{app => }/components/ui/box/index.js (100%)
rename ui/{app => }/components/ui/breadcrumbs/breadcrumbs.component.js (100%)
rename ui/{app => }/components/ui/breadcrumbs/breadcrumbs.component.test.js (100%)
rename ui/{app => }/components/ui/breadcrumbs/index.js (100%)
rename ui/{app => }/components/ui/breadcrumbs/index.scss (100%)
rename ui/{app => }/components/ui/button-group/button-group-component.test.js (100%)
rename ui/{app => }/components/ui/button-group/button-group.component.js (100%)
rename ui/{app => }/components/ui/button-group/button-group.stories.js (100%)
rename ui/{app => }/components/ui/button-group/index.js (100%)
rename ui/{app => }/components/ui/button-group/index.scss (100%)
rename ui/{app => }/components/ui/button/button.component.js (100%)
rename ui/{app => }/components/ui/button/button.stories.js (100%)
rename ui/{app => }/components/ui/button/buttons.scss (100%)
rename ui/{app => }/components/ui/button/index.js (100%)
rename ui/{app => }/components/ui/callout/callout.js (100%)
rename ui/{app => }/components/ui/callout/callout.scss (100%)
rename ui/{app => }/components/ui/callout/callout.stories.js (100%)
rename ui/{app => }/components/ui/callout/index.js (100%)
rename ui/{app => }/components/ui/card/card.component.js (100%)
rename ui/{app => }/components/ui/card/card.component.test.js (100%)
rename ui/{app => }/components/ui/card/index.js (100%)
rename ui/{app => }/components/ui/card/index.scss (100%)
rename ui/{app => }/components/ui/check-box/check-box.component.js (100%)
rename ui/{app => }/components/ui/check-box/check-box.stories.js (100%)
rename ui/{app => }/components/ui/check-box/index.js (100%)
rename ui/{app => }/components/ui/check-box/index.scss (100%)
rename ui/{app => }/components/ui/chip/chip.js (100%)
rename ui/{app => }/components/ui/chip/chip.scss (100%)
rename ui/{app => }/components/ui/chip/chip.stories.js (100%)
rename ui/{app => }/components/ui/chip/index.js (100%)
rename ui/{app => }/components/ui/circle-icon/circle-icon.component.js (100%)
rename ui/{app => }/components/ui/circle-icon/circle-icon.stories.js (100%)
rename ui/{app => }/components/ui/circle-icon/index.js (100%)
rename ui/{app => }/components/ui/circle-icon/index.scss (100%)
rename ui/{app => }/components/ui/color-indicator/color-indicator.js (100%)
rename ui/{app => }/components/ui/color-indicator/color-indicator.scss (100%)
rename ui/{app => }/components/ui/color-indicator/color-indicator.stories.js (100%)
rename ui/{app => }/components/ui/color-indicator/index.js (100%)
rename ui/{app => }/components/ui/confusable/confusable.component.js (100%)
rename ui/{app => }/components/ui/confusable/confusable.component.test.js (100%)
rename ui/{app => }/components/ui/confusable/index.js (100%)
rename ui/{app => }/components/ui/confusable/index.scss (100%)
rename ui/{app => }/components/ui/currency-display/currency-display.component.js (100%)
rename ui/{app => }/components/ui/currency-display/currency-display.component.test.js (100%)
rename ui/{app => }/components/ui/currency-display/index.js (100%)
rename ui/{app => }/components/ui/currency-display/index.scss (100%)
rename ui/{app => }/components/ui/currency-input/currency-input.component.js (100%)
rename ui/{app => }/components/ui/currency-input/currency-input.component.test.js (100%)
rename ui/{app => }/components/ui/currency-input/currency-input.container.js (100%)
rename ui/{app => }/components/ui/currency-input/currency-input.container.test.js (100%)
rename ui/{app => }/components/ui/currency-input/index.js (100%)
rename ui/{app => }/components/ui/currency-input/index.scss (100%)
rename ui/{app => }/components/ui/definition-list/definition-list.js (100%)
rename ui/{app => }/components/ui/definition-list/definition-list.scss (100%)
rename ui/{app => }/components/ui/definition-list/definition-list.stories.js (100%)
rename ui/{app => }/components/ui/definition-list/index.js (100%)
rename ui/{app => }/components/ui/dialog/dialog.scss (100%)
rename ui/{app => }/components/ui/dialog/index.js (100%)
rename ui/{app => }/components/ui/dropdown/dropdown.js (100%)
rename ui/{app => }/components/ui/dropdown/dropdown.scss (100%)
rename ui/{app => }/components/ui/dropdown/dropdown.stories.js (100%)
rename ui/{app => }/components/ui/dropdown/index.js (100%)
rename ui/{app => }/components/ui/editable-label/editable-label.js (100%)
rename ui/{app => }/components/ui/editable-label/index.js (100%)
rename ui/{app => }/components/ui/editable-label/index.scss (100%)
rename ui/{app => }/components/ui/error-message/error-message.component.js (100%)
rename ui/{app => }/components/ui/error-message/error-message.component.test.js (100%)
rename ui/{app => }/components/ui/error-message/index.js (100%)
rename ui/{app => }/components/ui/error-message/index.scss (100%)
rename ui/{app => }/components/ui/export-text-container/export-text-container.component.js (100%)
rename ui/{app => }/components/ui/export-text-container/index.js (100%)
rename ui/{app => }/components/ui/export-text-container/index.scss (100%)
rename ui/{app => }/components/ui/hex-to-decimal/hex-to-decimal.component.js (100%)
rename ui/{app => }/components/ui/hex-to-decimal/hex-to-decimal.component.test.js (100%)
rename ui/{app => }/components/ui/hex-to-decimal/index.js (100%)
rename ui/{app => }/components/ui/icon-border/icon-border.js (100%)
rename ui/{app => }/components/ui/icon-border/icon-border.scss (100%)
rename ui/{app => }/components/ui/icon-border/index.js (100%)
rename ui/{app => }/components/ui/icon-button/icon-button.js (100%)
rename ui/{app => }/components/ui/icon-button/icon-button.scss (100%)
rename ui/{app => }/components/ui/icon-button/index.js (100%)
rename ui/{app => }/components/ui/icon-with-fallback/icon-with-fallback.component.js (100%)
rename ui/{app => }/components/ui/icon-with-fallback/icon-with-fallback.scss (100%)
rename ui/{app => }/components/ui/icon-with-fallback/index.js (100%)
rename ui/{app => }/components/ui/icon-with-label/icon-with-label.js (100%)
rename ui/{app => }/components/ui/icon-with-label/index.js (100%)
rename ui/{app => }/components/ui/icon-with-label/index.scss (100%)
rename ui/{app => }/components/ui/icon/approve-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/copy-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/icon.stories.js (100%)
rename ui/{app => }/components/ui/icon/index.scss (100%)
rename ui/{app => }/components/ui/icon/info-icon-inverted.component.js (100%)
rename ui/{app => }/components/ui/icon/info-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/interaction-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/overview-buy-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/overview-send-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/paper-airplane-icon.js (100%)
rename ui/{app => }/components/ui/icon/preloader/index.js (100%)
rename ui/{app => }/components/ui/icon/preloader/index.scss (100%)
rename ui/{app => }/components/ui/icon/preloader/preloader-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/receive-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/send-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/sign-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/sun-check-icon.component.js (100%)
rename ui/{app => }/components/ui/icon/swap-icon-for-list.component.js (100%)
rename ui/{app => }/components/ui/icon/swap-icon.component.js (100%)
rename ui/{app => }/components/ui/identicon/blockieIdenticon/blockieIdenticon.component.js (100%)
rename ui/{app => }/components/ui/identicon/blockieIdenticon/index.js (100%)
rename ui/{app => }/components/ui/identicon/identicon.component.js (96%)
rename ui/{app => }/components/ui/identicon/identicon.component.test.js (100%)
rename ui/{app => }/components/ui/identicon/identicon.container.js (100%)
rename ui/{app => }/components/ui/identicon/identicon.stories.js (100%)
rename ui/{app => }/components/ui/identicon/index.js (100%)
rename ui/{app => }/components/ui/identicon/index.scss (100%)
rename ui/{app => }/components/ui/info-tooltip/index.js (100%)
rename ui/{app => }/components/ui/info-tooltip/index.scss (100%)
rename ui/{app => }/components/ui/info-tooltip/info-tooltip.js (100%)
rename ui/{app => }/components/ui/info-tooltip/info-tooltip.stories.js (100%)
rename ui/{app => }/components/ui/jazzicon/index.js (100%)
rename ui/{app => }/components/ui/jazzicon/jazzicon.component.js (95%)
rename ui/{app => }/components/ui/list-item/index.js (100%)
rename ui/{app => }/components/ui/list-item/index.scss (100%)
rename ui/{app => }/components/ui/list-item/list-item.component.js (100%)
rename ui/{app => }/components/ui/list-item/list-item.component.test.js (100%)
rename ui/{app => }/components/ui/list-item/list-item.stories.js (100%)
rename ui/{app => }/components/ui/loading-indicator/index.js (100%)
rename ui/{app => }/components/ui/loading-indicator/loading-indicator.js (100%)
rename ui/{app => }/components/ui/loading-indicator/loading-indicator.scss (100%)
rename ui/{app => }/components/ui/loading-screen/index.js (100%)
rename ui/{app => }/components/ui/loading-screen/index.scss (100%)
rename ui/{app => }/components/ui/loading-screen/loading-screen.component.js (100%)
rename ui/{app => }/components/ui/lock-icon/index.js (100%)
rename ui/{app => }/components/ui/lock-icon/lock-icon.component.js (100%)
rename ui/{app => }/components/ui/mascot/index.js (100%)
rename ui/{app => }/components/ui/mascot/mascot.component.js (100%)
rename ui/{app => }/components/ui/mascot/mascot.stories.js (100%)
rename ui/{app => }/components/ui/menu/index.js (100%)
rename ui/{app => }/components/ui/menu/menu-item.js (100%)
rename ui/{app => }/components/ui/menu/menu.js (100%)
rename ui/{app => }/components/ui/menu/menu.scss (100%)
rename ui/{app => }/components/ui/menu/menu.stories.js (100%)
rename ui/{app => }/components/ui/metafox-logo/index.js (100%)
rename ui/{app => }/components/ui/metafox-logo/metafox-logo.component.js (100%)
rename ui/{app => }/components/ui/metafox-logo/metafox-logo.component.test.js (100%)
rename ui/{app => }/components/ui/page-container/index.js (100%)
rename ui/{app => }/components/ui/page-container/index.scss (100%)
rename ui/{app => }/components/ui/page-container/page-container-content.component.js (100%)
rename ui/{app => }/components/ui/page-container/page-container-footer/index.js (100%)
rename ui/{app => }/components/ui/page-container/page-container-footer/page-container-footer.component.js (100%)
rename ui/{app => }/components/ui/page-container/page-container-footer/page-container-footer.component.test.js (100%)
rename ui/{app => }/components/ui/page-container/page-container-header/index.js (100%)
rename ui/{app => }/components/ui/page-container/page-container-header/page-container-header.component.js (100%)
rename ui/{app => }/components/ui/page-container/page-container-header/page-container-header.component.test.js (100%)
rename ui/{app => }/components/ui/page-container/page-container.component.js (100%)
rename ui/{app => }/components/ui/popover/index.js (100%)
rename ui/{app => }/components/ui/popover/index.scss (100%)
rename ui/{app => }/components/ui/popover/popover.component.js (100%)
rename ui/{app => }/components/ui/popover/popover.stories.js (100%)
rename ui/{app => }/components/ui/pulse-loader/index.js (100%)
rename ui/{app => }/components/ui/pulse-loader/index.scss (100%)
rename ui/{app => }/components/ui/pulse-loader/pulse-loader.js (100%)
rename ui/{app => }/components/ui/pulse-loader/pulse-loader.stories.js (100%)
rename ui/{app => }/components/ui/qr-code/index.js (100%)
rename ui/{app => }/components/ui/qr-code/index.scss (100%)
rename ui/{app => }/components/ui/qr-code/qr-code.js (95%)
rename ui/{app => }/components/ui/readonly-input/index.js (100%)
rename ui/{app => }/components/ui/readonly-input/index.scss (100%)
rename ui/{app => }/components/ui/readonly-input/readonly-input.js (100%)
rename ui/{app => }/components/ui/search-icon/index.js (100%)
rename ui/{app => }/components/ui/search-icon/search-icon.component.js (100%)
rename ui/{app => }/components/ui/sender-to-recipient/index.js (100%)
rename ui/{app => }/components/ui/sender-to-recipient/index.scss (100%)
rename ui/{app => }/components/ui/sender-to-recipient/sender-to-recipient.component.js (98%)
rename ui/{app => }/components/ui/sender-to-recipient/sender-to-recipient.constants.js (100%)
rename ui/{app => }/components/ui/site-icon/index.js (100%)
rename ui/{app => }/components/ui/site-icon/site-icon.js (100%)
rename ui/{app => }/components/ui/snackbar/index.js (100%)
rename ui/{app => }/components/ui/snackbar/index.scss (100%)
rename ui/{app => }/components/ui/snackbar/snackbar.component.js (100%)
rename ui/{app => }/components/ui/spinner/index.js (100%)
rename ui/{app => }/components/ui/spinner/spinner.component.js (100%)
rename ui/{app => }/components/ui/tabs/index.js (100%)
rename ui/{app => }/components/ui/tabs/index.scss (100%)
rename ui/{app => }/components/ui/tabs/tab/index.js (100%)
rename ui/{app => }/components/ui/tabs/tab/index.scss (100%)
rename ui/{app => }/components/ui/tabs/tab/tab.component.js (100%)
rename ui/{app => }/components/ui/tabs/tabs.component.js (100%)
rename ui/{app => }/components/ui/tabs/tabs.stories.js (100%)
rename ui/{app => }/components/ui/text-field/index.js (100%)
rename ui/{app => }/components/ui/text-field/text-field.component.js (100%)
rename ui/{app => }/components/ui/text-field/text-field.stories.js (100%)
rename ui/{app => }/components/ui/toggle-button/index.js (100%)
rename ui/{app => }/components/ui/toggle-button/index.scss (100%)
rename ui/{app => }/components/ui/toggle-button/toggle-button.component.js (100%)
rename ui/{app => }/components/ui/token-balance/index.js (100%)
rename ui/{app => }/components/ui/token-balance/index.scss (100%)
rename ui/{app => }/components/ui/token-balance/token-balance.js (100%)
rename ui/{app => }/components/ui/token-currency-display/index.js (100%)
rename ui/{app => }/components/ui/token-currency-display/token-currency-display.component.js (100%)
rename ui/{app => }/components/ui/token-input/index.js (100%)
rename ui/{app => }/components/ui/token-input/token-input.component.js (98%)
rename ui/{app => }/components/ui/token-input/token-input.component.test.js (100%)
rename ui/{app => }/components/ui/token-input/token-input.container.js (100%)
rename ui/{app => }/components/ui/tooltip/index.js (100%)
rename ui/{app => }/components/ui/tooltip/index.scss (100%)
rename ui/{app => }/components/ui/tooltip/tooltip.js (100%)
rename ui/{app => }/components/ui/truncated-definition-list/index.js (100%)
rename ui/{app => }/components/ui/truncated-definition-list/truncated-definition-list.js (100%)
rename ui/{app => }/components/ui/truncated-definition-list/truncated-definition-list.scss (100%)
rename ui/{app => }/components/ui/truncated-definition-list/truncated-definition-list.stories.js (100%)
rename ui/{app => }/components/ui/typography/index.js (100%)
rename ui/{app => }/components/ui/typography/typography.js (100%)
rename ui/{app => }/components/ui/typography/typography.scss (100%)
rename ui/{app => }/components/ui/typography/typography.stories.js (100%)
rename ui/{app => }/components/ui/ui-components.scss (100%)
rename ui/{app => }/components/ui/unit-input/index.js (100%)
rename ui/{app => }/components/ui/unit-input/index.scss (100%)
rename ui/{app => }/components/ui/unit-input/unit-input.component.js (100%)
rename ui/{app => }/components/ui/unit-input/unit-input.component.test.js (100%)
rename ui/{app => }/components/ui/url-icon/index.js (100%)
rename ui/{app => }/components/ui/url-icon/index.scss (100%)
rename ui/{app => }/components/ui/url-icon/url-icon.js (100%)
rename ui/{app => }/contexts/i18n.js (100%)
rename ui/{app => }/contexts/metametrics.js (98%)
rename ui/{app => }/contexts/metametrics.new.js (91%)
rename ui/{app => }/css/base-styles.scss (78%)
rename ui/{app => }/css/design-system/attributes.scss (100%)
rename ui/{app => }/css/design-system/breakpoints.scss (100%)
rename ui/{app => }/css/design-system/colors.scss (100%)
rename ui/{app => }/css/design-system/deprecated-colors.scss (100%)
rename ui/{app => }/css/design-system/index.scss (100%)
rename ui/{app => }/css/design-system/typography.scss (92%)
rename ui/{app => }/css/design-system/z-index.scss (100%)
rename ui/{app => }/css/index.scss (93%)
rename ui/{app => }/css/itcss/README.md (100%)
rename ui/{app => }/css/itcss/components/index.scss (100%)
rename ui/{app => }/css/itcss/components/network.scss (100%)
rename ui/{app => }/css/itcss/components/newui-sections.scss (100%)
rename ui/{app => }/css/itcss/components/send.scss (100%)
rename ui/{app => }/css/itcss/settings/index.scss (100%)
rename ui/{app => }/css/itcss/settings/variables.scss (100%)
rename ui/{app => }/css/itcss/tools/index.scss (100%)
rename ui/{app => }/css/itcss/tools/utilities.scss (100%)
rename ui/{app => }/css/reset.scss (100%)
rename ui/{app => }/css/utilities/_colors.scss (100%)
rename ui/{app => }/css/utilities/_spacing.scss (100%)
rename ui/{app => }/css/utilities/index.scss (100%)
rename ui/{app => }/ducks/alerts/enums.js (100%)
rename ui/{app => }/ducks/alerts/index.js (100%)
rename ui/{app => }/ducks/alerts/invalid-custom-network.js (93%)
rename ui/{app => }/ducks/alerts/unconnected-account.js (98%)
rename ui/{app => }/ducks/app/app.js (100%)
rename ui/{app => }/ducks/app/app.test.js (100%)
rename ui/{app => }/ducks/confirm-transaction/confirm-transaction.duck.js (100%)
rename ui/{app => }/ducks/confirm-transaction/confirm-transaction.duck.test.js (98%)
rename ui/{app => }/ducks/gas/gas-duck.test.js (99%)
rename ui/{app => }/ducks/gas/gas.duck.js (98%)
rename ui/{app => }/ducks/history/history.js (100%)
rename ui/{app => }/ducks/index.js (93%)
rename ui/{app => }/ducks/locale/locale.js (100%)
rename ui/{app => }/ducks/metamask/metamask.js (98%)
rename ui/{app => }/ducks/metamask/metamask.test.js (100%)
rename ui/{app => }/ducks/send/send-duck.test.js (100%)
rename ui/{app => }/ducks/send/send.duck.js (100%)
rename ui/{app => }/ducks/swaps/swaps.js (99%)
rename ui/{app => }/ducks/swaps/swaps.test.js (98%)
rename ui/{app => }/helpers/constants/available-conversions.json (100%)
rename ui/{app => }/helpers/constants/common.js (100%)
rename ui/{app => }/helpers/constants/connected-sites.js (100%)
rename ui/{app => }/helpers/constants/design-system.js (100%)
rename ui/{app => }/helpers/constants/error-keys.js (100%)
rename ui/{app => }/helpers/constants/routes.js (100%)
rename ui/{app => }/helpers/constants/transactions.js (91%)
rename ui/{app => }/helpers/higher-order-components/authenticated/authenticated.component.js (100%)
rename ui/{app => }/helpers/higher-order-components/authenticated/authenticated.container.js (100%)
rename ui/{app => }/helpers/higher-order-components/authenticated/index.js (100%)
rename ui/{app => }/helpers/higher-order-components/feature-toggled-route.js (100%)
rename ui/{app => }/helpers/higher-order-components/initialized/index.js (100%)
rename ui/{app => }/helpers/higher-order-components/initialized/initialized.component.js (100%)
rename ui/{app => }/helpers/higher-order-components/initialized/initialized.container.js (100%)
rename ui/{app => }/helpers/higher-order-components/with-modal-props/index.js (100%)
rename ui/{app => }/helpers/higher-order-components/with-modal-props/with-modal-props.js (100%)
rename ui/{app => }/helpers/higher-order-components/with-modal-props/with-modal-props.test.js (100%)
rename ui/{lib => helpers/utils}/account-link.js (100%)
rename ui/{lib => helpers/utils}/account-link.test.js (97%)
rename ui/{app => }/helpers/utils/common.util.js (100%)
rename ui/{app => }/helpers/utils/common.util.test.js (100%)
rename ui/{app => }/helpers/utils/confirm-tx.util.js (98%)
rename ui/{app => }/helpers/utils/confirm-tx.util.test.js (100%)
rename ui/{app => }/helpers/utils/conversion-util.js (100%)
rename ui/{app => }/helpers/utils/conversion-util.test.js (100%)
rename ui/{app => }/helpers/utils/conversions.util.js (98%)
rename ui/{app => }/helpers/utils/conversions.util.test.js (100%)
rename ui/{app => }/helpers/utils/fetch-with-cache.js (90%)
rename ui/{app => }/helpers/utils/fetch-with-cache.test.js (97%)
rename ui/{app => }/helpers/utils/formatters.js (100%)
rename ui/{app => }/helpers/utils/i18n-helper.js (97%)
rename ui/{app => }/helpers/utils/i18n-helper.test.js (100%)
rename ui/{lib => helpers/utils}/icon-factory.js (97%)
rename ui/{lib => helpers/utils}/is-mobile-view.js (100%)
rename ui/{lib => helpers/utils}/storage-helpers.js (100%)
rename ui/{app => }/helpers/utils/switch-direction.js (100%)
rename ui/{app => }/helpers/utils/token-util.js (100%)
rename ui/{app => }/helpers/utils/transactions.util.js (98%)
rename ui/{app => }/helpers/utils/transactions.util.test.js (97%)
rename ui/{lib => helpers/utils}/tx-helper.js (92%)
rename ui/{lib => helpers/utils}/tx-helper.test.js (92%)
rename ui/{app => }/helpers/utils/util.js (98%)
rename ui/{app => }/helpers/utils/util.test.js (100%)
rename ui/{lib => helpers/utils}/webcam-utils.js (90%)
rename ui/{app => }/hooks/useCancelTransaction.js (100%)
rename ui/{app => }/hooks/useCancelTransaction.test.js (98%)
rename ui/{app => }/hooks/useCopyToClipboard.js (100%)
rename ui/{app => }/hooks/useCurrencyDisplay.js (100%)
rename ui/{app => }/hooks/useCurrencyDisplay.test.js (100%)
rename ui/{app => }/hooks/useCurrentAsset.js (96%)
rename ui/{app => }/hooks/useEqualityCheck.js (100%)
rename ui/{app => }/hooks/useEthFiatAmount.js (100%)
rename ui/{app => }/hooks/useI18nContext.js (100%)
rename ui/{app => }/hooks/useMethodData.js (100%)
rename ui/{app => }/hooks/useMetricEvent.js (92%)
rename ui/{app => }/hooks/useOriginMetadata.js (100%)
rename ui/{app => }/hooks/usePrevious.js (100%)
rename ui/{app => }/hooks/useRetryTransaction.js (100%)
rename ui/{app => }/hooks/useRetryTransaction.test.js (97%)
rename ui/{app => }/hooks/useShouldShowSpeedUp.js (100%)
rename ui/{app => }/hooks/useSwappedTokenValue.js (96%)
rename ui/{app => }/hooks/useTimeout.js (100%)
rename ui/{app => }/hooks/useTokenData.js (100%)
rename ui/{app => }/hooks/useTokenData.test.js (96%)
rename ui/{app => }/hooks/useTokenDisplayValue.js (100%)
rename ui/{app => }/hooks/useTokenDisplayValue.test.js (100%)
rename ui/{app => }/hooks/useTokenFiatAmount.js (100%)
rename ui/{app => }/hooks/useTokenTracker.js (100%)
rename ui/{app => }/hooks/useTokensToSearch.js (96%)
rename ui/{app => }/hooks/useTransactionDisplayData.js (99%)
rename ui/{app => }/hooks/useTransactionDisplayData.test.js (97%)
rename ui/{app => }/hooks/useUserPreferencedCurrency.js (100%)
rename ui/{app => }/hooks/useUserPreferencedCurrency.test.js (100%)
delete mode 100644 ui/lib/shallow-with-context.js
delete mode 100644 ui/lib/test-timeout.js
rename ui/{app => }/pages/add-token/add-token.component.js (98%)
rename ui/{app => }/pages/add-token/add-token.container.js (100%)
rename ui/{app => }/pages/add-token/add-token.test.js (97%)
rename ui/{app => }/pages/add-token/index.js (100%)
rename ui/{app => }/pages/add-token/index.scss (100%)
rename ui/{app => }/pages/add-token/token-list/index.js (100%)
rename ui/{app => }/pages/add-token/token-list/index.scss (100%)
rename ui/{app => }/pages/add-token/token-list/token-list-placeholder/index.js (100%)
rename ui/{app => }/pages/add-token/token-list/token-list-placeholder/index.scss (100%)
rename ui/{app => }/pages/add-token/token-list/token-list-placeholder/token-list-placeholder.component.js (100%)
rename ui/{app => }/pages/add-token/token-list/token-list.component.js (100%)
rename ui/{app => }/pages/add-token/token-list/token-list.container.js (100%)
rename ui/{app => }/pages/add-token/token-search/index.js (100%)
rename ui/{app => }/pages/add-token/token-search/token-search.component.js (100%)
rename ui/{app => }/pages/asset/asset.js (100%)
rename ui/{app => }/pages/asset/asset.scss (100%)
rename ui/{app => }/pages/asset/components/asset-breadcrumb.js (100%)
rename ui/{app => }/pages/asset/components/asset-navigation.js (100%)
rename ui/{app => }/pages/asset/components/asset-options.js (100%)
rename ui/{app => }/pages/asset/components/native-asset.js (96%)
rename ui/{app => }/pages/asset/components/token-asset.js (100%)
rename ui/{app => }/pages/asset/index.js (100%)
rename ui/{app => }/pages/confirm-add-suggested-token/confirm-add-suggested-token.component.js (97%)
rename ui/{app => }/pages/confirm-add-suggested-token/confirm-add-suggested-token.container.js (100%)
rename ui/{app => }/pages/confirm-add-suggested-token/index.js (100%)
rename ui/{app => }/pages/confirm-add-token/confirm-add-token.component.js (100%)
rename ui/{app => }/pages/confirm-add-token/confirm-add-token.container.js (100%)
rename ui/{app => }/pages/confirm-add-token/index.js (100%)
rename ui/{app => }/pages/confirm-add-token/index.scss (100%)
rename ui/{app => }/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js (100%)
rename ui/{app => }/pages/confirm-approve/confirm-approve-content/index.js (100%)
rename ui/{app => }/pages/confirm-approve/confirm-approve-content/index.scss (100%)
rename ui/{app => }/pages/confirm-approve/confirm-approve.js (100%)
rename ui/{app => }/pages/confirm-approve/confirm-approve.util.js (94%)
rename ui/{app => }/pages/confirm-approve/index.js (100%)
rename ui/{app => }/pages/confirm-approve/index.scss (100%)
rename ui/{app => }/pages/confirm-decrypt-message/confirm-decrypt-message.component.js (98%)
rename ui/{app => }/pages/confirm-decrypt-message/confirm-decrypt-message.container.js (100%)
rename ui/{app => }/pages/confirm-decrypt-message/confirm-decrypt-message.scss (100%)
rename ui/{app => }/pages/confirm-decrypt-message/index.js (100%)
rename ui/{app => }/pages/confirm-deploy-contract/confirm-deploy-contract.component.js (95%)
rename ui/{app => }/pages/confirm-deploy-contract/confirm-deploy-contract.container.js (100%)
rename ui/{app => }/pages/confirm-deploy-contract/index.js (100%)
rename ui/{app => }/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js (97%)
rename ui/{app => }/pages/confirm-encryption-public-key/confirm-encryption-public-key.container.js (100%)
rename ui/{app => }/pages/confirm-encryption-public-key/confirm-encryption-public-key.scss (100%)
rename ui/{app => }/pages/confirm-encryption-public-key/index.js (100%)
rename ui/{app => }/pages/confirm-send-ether/confirm-send-ether.component.js (100%)
rename ui/{app => }/pages/confirm-send-ether/confirm-send-ether.container.js (100%)
rename ui/{app => }/pages/confirm-send-ether/index.js (100%)
rename ui/{app => }/pages/confirm-send-token/confirm-send-token.component.js (100%)
rename ui/{app => }/pages/confirm-send-token/confirm-send-token.container.js (100%)
rename ui/{app => }/pages/confirm-send-token/index.js (100%)
rename ui/{app => }/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js (100%)
rename ui/{app => }/pages/confirm-token-transaction-base/confirm-token-transaction-base.container.js (100%)
rename ui/{app => }/pages/confirm-token-transaction-base/index.js (100%)
rename ui/{app => }/pages/confirm-transaction-base/confirm-transaction-base.component.js (98%)
rename ui/{app => }/pages/confirm-transaction-base/confirm-transaction-base.component.test.js (100%)
rename ui/{app => }/pages/confirm-transaction-base/confirm-transaction-base.container.js (98%)
rename ui/{app => }/pages/confirm-transaction-base/index.js (100%)
rename ui/{app => }/pages/confirm-transaction-switch/confirm-transaction-switch.component.js (95%)
rename ui/{app => }/pages/confirm-transaction-switch/confirm-transaction-switch.container.js (100%)
rename ui/{app => }/pages/confirm-transaction-switch/index.js (100%)
rename ui/{app => }/pages/confirm-transaction/conf-tx.js (97%)
rename ui/{app => }/pages/confirm-transaction/confirm-transaction.component.js (100%)
rename ui/{app => }/pages/confirm-transaction/confirm-transaction.container.js (100%)
rename ui/{app => }/pages/confirm-transaction/index.js (100%)
rename ui/{app => }/pages/confirmation/components/confirmation-footer/confirmation-footer.js (100%)
rename ui/{app => }/pages/confirmation/components/confirmation-footer/confirmation-footer.scss (100%)
rename ui/{app => }/pages/confirmation/components/confirmation-footer/index.js (100%)
rename ui/{app => }/pages/confirmation/confirmation.js (100%)
rename ui/{app => }/pages/confirmation/confirmation.scss (100%)
rename ui/{app => }/pages/confirmation/index.js (100%)
rename ui/{app => }/pages/confirmation/templates/add-ethereum-chain.js (100%)
rename ui/{app => }/pages/confirmation/templates/index.js (98%)
rename ui/{app => }/pages/confirmation/templates/switch-ethereum-chain.js (96%)
rename ui/{app => }/pages/connected-accounts/connected-accounts.component.js (100%)
rename ui/{app => }/pages/connected-accounts/connected-accounts.container.js (100%)
rename ui/{app => }/pages/connected-accounts/index.js (100%)
rename ui/{app => }/pages/connected-accounts/index.scss (100%)
rename ui/{app => }/pages/connected-sites/connected-sites.component.js (100%)
rename ui/{app => }/pages/connected-sites/connected-sites.container.js (100%)
rename ui/{app => }/pages/connected-sites/index.js (100%)
rename ui/{app => }/pages/connected-sites/index.scss (100%)
rename ui/{app => }/pages/create-account/connect-hardware/account-list.js (99%)
rename ui/{app => }/pages/create-account/connect-hardware/index.js (100%)
rename ui/{app => }/pages/create-account/connect-hardware/index.scss (100%)
rename ui/{app => }/pages/create-account/connect-hardware/select-hardware.js (100%)
rename ui/{app => }/pages/create-account/create-account.component.js (100%)
rename ui/{app => }/pages/create-account/import-account/index.js (100%)
rename ui/{app => }/pages/create-account/import-account/index.scss (100%)
rename ui/{app => }/pages/create-account/import-account/json.js (100%)
rename ui/{app => }/pages/create-account/import-account/private-key.js (100%)
rename ui/{app => }/pages/create-account/index.js (100%)
rename ui/{app => }/pages/create-account/index.scss (100%)
rename ui/{app => }/pages/create-account/new-account.component.js (100%)
rename ui/{app => }/pages/create-account/new-account.container.js (100%)
rename ui/{app => }/pages/error/error.component.js (93%)
rename ui/{app => }/pages/error/index.js (100%)
rename ui/{app => }/pages/error/index.scss (100%)
rename ui/{app => }/pages/first-time-flow/create-password/create-password.component.js (100%)
rename ui/{app => }/pages/first-time-flow/create-password/create-password.container.js (100%)
rename ui/{app => }/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.js (100%)
rename ui/{app => }/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.test.js (100%)
rename ui/{app => }/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.container.js (100%)
rename ui/{app => }/pages/first-time-flow/create-password/import-with-seed-phrase/index.js (100%)
rename ui/{app => }/pages/first-time-flow/create-password/index.js (100%)
rename ui/{app => }/pages/first-time-flow/create-password/new-account/index.js (100%)
rename ui/{app => }/pages/first-time-flow/create-password/new-account/new-account.component.js (100%)
rename ui/{app => }/pages/first-time-flow/end-of-flow/end-of-flow.component.js (100%)
rename ui/{app => }/pages/first-time-flow/end-of-flow/end-of-flow.container.js (100%)
rename ui/{app => }/pages/first-time-flow/end-of-flow/end-of-flow.test.js (87%)
rename ui/{app => }/pages/first-time-flow/end-of-flow/index.js (100%)
rename ui/{app => }/pages/first-time-flow/end-of-flow/index.scss (100%)
rename ui/{app => }/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.component.js (100%)
rename ui/{app => }/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.container.js (100%)
rename ui/{app => }/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.test.js (97%)
rename ui/{app => }/pages/first-time-flow/first-time-flow-switch/index.js (100%)
rename ui/{app => }/pages/first-time-flow/first-time-flow.component.js (100%)
rename ui/{app => }/pages/first-time-flow/first-time-flow.container.js (100%)
rename ui/{app => }/pages/first-time-flow/index.js (100%)
rename ui/{app => }/pages/first-time-flow/index.scss (100%)
rename ui/{app => }/pages/first-time-flow/metametrics-opt-in/index.js (100%)
rename ui/{app => }/pages/first-time-flow/metametrics-opt-in/index.scss (100%)
rename ui/{app => }/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js (100%)
rename ui/{app => }/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.container.js (100%)
rename ui/{app => }/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.test.js (92%)
rename ui/{app => }/pages/first-time-flow/onboarding-initiator-util.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/confirm-seed-phrase-component.test.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.component.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.container.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/confirm-seed-phrase/draggable-seed.component.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.scss (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/index.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/index.scss (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.scss (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.component.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.container.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.test.js (100%)
rename ui/{app => }/pages/first-time-flow/seed-phrase/seed-phrase.component.js (100%)
rename ui/{app => }/pages/first-time-flow/select-action/index.js (100%)
rename ui/{app => }/pages/first-time-flow/select-action/index.scss (100%)
rename ui/{app => }/pages/first-time-flow/select-action/select-action.component.js (100%)
rename ui/{app => }/pages/first-time-flow/select-action/select-action.container.js (100%)
rename ui/{app => }/pages/first-time-flow/select-action/select-action.test.js (95%)
rename ui/{app => }/pages/first-time-flow/welcome/index.js (100%)
rename ui/{app => }/pages/first-time-flow/welcome/index.scss (100%)
rename ui/{app => }/pages/first-time-flow/welcome/welcome.component.js (100%)
rename ui/{app => }/pages/first-time-flow/welcome/welcome.container.js (100%)
rename ui/{app => }/pages/first-time-flow/welcome/welcome.test.js (95%)
rename ui/{app => }/pages/home/home.component.js (100%)
rename ui/{app => }/pages/home/home.container.js (96%)
rename ui/{app => }/pages/home/index.js (100%)
rename ui/{app => }/pages/home/index.scss (100%)
rename ui/{app => }/pages/index.js (100%)
rename ui/{app => }/pages/keychains/index.scss (100%)
rename ui/{app => }/pages/keychains/restore-vault.js (100%)
rename ui/{app => }/pages/keychains/reveal-seed.js (100%)
rename ui/{app => }/pages/keychains/reveal-seed.test.js (100%)
rename ui/{app => }/pages/lock/index.js (100%)
rename ui/{app => }/pages/lock/lock.component.js (100%)
rename ui/{app => }/pages/lock/lock.container.js (100%)
rename ui/{app => }/pages/lock/lock.test.js (92%)
rename ui/{app => }/pages/mobile-sync/index.js (100%)
rename ui/{app => }/pages/mobile-sync/mobile-sync.component.js (100%)
rename ui/{app => }/pages/mobile-sync/mobile-sync.container.js (100%)
rename ui/{app => }/pages/pages.scss (100%)
rename ui/{app => }/pages/permissions-connect/choose-account/choose-account.component.js (100%)
rename ui/{app => }/pages/permissions-connect/choose-account/index.js (100%)
rename ui/{app => }/pages/permissions-connect/choose-account/index.scss (100%)
rename ui/{app => }/pages/permissions-connect/index.js (100%)
rename ui/{app => }/pages/permissions-connect/index.scss (100%)
rename ui/{app => }/pages/permissions-connect/permissions-connect.component.js (98%)
rename ui/{app => }/pages/permissions-connect/permissions-connect.container.js (100%)
rename ui/{app => }/pages/permissions-connect/redirect/index.js (100%)
rename ui/{app => }/pages/permissions-connect/redirect/index.scss (100%)
rename ui/{app => }/pages/permissions-connect/redirect/permissions-redirect.component.js (100%)
rename ui/{app => }/pages/routes/index.js (100%)
rename ui/{app => }/pages/routes/routes.component.js (98%)
rename ui/{app => }/pages/routes/routes.container.js (100%)
rename ui/{app => }/pages/send/index.js (100%)
rename ui/{app => }/pages/send/send-content/add-recipient/add-recipient.component.js (99%)
rename ui/{app => }/pages/send/send-content/add-recipient/add-recipient.component.test.js (100%)
rename ui/{app => }/pages/send/send-content/add-recipient/add-recipient.container.js (100%)
rename ui/{app => }/pages/send/send-content/add-recipient/add-recipient.container.test.js (94%)
rename ui/{app => }/pages/send/send-content/add-recipient/add-recipient.js (96%)
rename ui/{app => }/pages/send/send-content/add-recipient/add-recipient.utils.test.js (92%)
rename ui/{app => }/pages/send/send-content/add-recipient/ens-input.component.js (98%)
rename ui/{app => }/pages/send/send-content/add-recipient/ens-input.container.js (85%)
rename ui/{app => }/pages/send/send-content/add-recipient/ens-input.js (100%)
rename ui/{app => }/pages/send/send-content/add-recipient/index.js (100%)
rename ui/{app => }/pages/send/send-content/index.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.test.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.test.js (93%)
rename ui/{app => }/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.js (89%)
rename ui/{app => }/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.test.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/amount-max-button/index.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/index.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/send-amount-row.component.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/send-amount-row.component.test.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/send-amount-row.container.js (100%)
rename ui/{app => }/pages/send/send-content/send-amount-row/send-amount-row.container.test.js (95%)
rename ui/{app => }/pages/send/send-content/send-amount-row/send-amount-row.scss (100%)
rename ui/{app => }/pages/send/send-content/send-asset-row/index.js (100%)
rename ui/{app => }/pages/send/send-content/send-asset-row/send-asset-row.component.js (100%)
rename ui/{app => }/pages/send/send-content/send-asset-row/send-asset-row.container.js (100%)
rename ui/{app => }/pages/send/send-content/send-content.component.js (100%)
rename ui/{app => }/pages/send/send-content/send-content.component.test.js (100%)
rename ui/{app => }/pages/send/send-content/send-content.container.js (100%)
rename ui/{app => }/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.js (100%)
rename ui/{app => }/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.test.js (100%)
rename ui/{app => }/pages/send/send-content/send-gas-row/gas-fee-display/index.js (100%)
rename ui/{app => }/pages/send/send-content/send-gas-row/index.js (100%)
rename ui/{app => }/pages/send/send-content/send-gas-row/send-gas-row.component.js (100%)
rename ui/{app => }/pages/send/send-content/send-gas-row/send-gas-row.component.test.js (100%)
rename ui/{app => }/pages/send/send-content/send-gas-row/send-gas-row.container.js (100%)
rename ui/{app => }/pages/send/send-content/send-gas-row/send-gas-row.container.test.js (95%)
rename ui/{app => }/pages/send/send-content/send-gas-row/send-gas-row.scss (100%)
rename ui/{app => }/pages/send/send-content/send-hex-data-row/index.js (100%)
rename ui/{app => }/pages/send/send-content/send-hex-data-row/send-hex-data-row.component.js (100%)
rename ui/{app => }/pages/send/send-content/send-hex-data-row/send-hex-data-row.container.js (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/index.js (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/send-row-error-message/index.js (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.js (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.test.js (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.js (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.test.js (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.scss (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.js (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.test.js (100%)
rename ui/{app => }/pages/send/send-content/send-row-wrapper/send-row-wrapper.scss (100%)
rename ui/{app => }/pages/send/send-footer/index.js (100%)
rename ui/{app => }/pages/send/send-footer/send-footer.component.js (100%)
rename ui/{app => }/pages/send/send-footer/send-footer.component.test.js (100%)
rename ui/{app => }/pages/send/send-footer/send-footer.container.js (97%)
rename ui/{app => }/pages/send/send-footer/send-footer.container.test.js (96%)
rename ui/{app => }/pages/send/send-footer/send-footer.scss (100%)
rename ui/{app => }/pages/send/send-footer/send-footer.utils.js (96%)
rename ui/{app => }/pages/send/send-footer/send-footer.utils.test.js (100%)
rename ui/{app => }/pages/send/send-header/index.js (100%)
rename ui/{app => }/pages/send/send-header/send-header.component.js (100%)
rename ui/{app => }/pages/send/send-header/send-header.component.test.js (100%)
rename ui/{app => }/pages/send/send-header/send-header.container.js (100%)
rename ui/{app => }/pages/send/send.component.js (99%)
rename ui/{app => }/pages/send/send.component.test.js (99%)
rename ui/{app => }/pages/send/send.constants.js (96%)
rename ui/{app => }/pages/send/send.container.js (100%)
rename ui/{app => }/pages/send/send.container.test.js (97%)
rename ui/{app => }/pages/send/send.scss (100%)
rename ui/{app => }/pages/send/send.utils.js (99%)
rename ui/{app => }/pages/send/send.utils.test.js (99%)
rename ui/{app => }/pages/settings/advanced-tab/advanced-tab.component.js (99%)
rename ui/{app => }/pages/settings/advanced-tab/advanced-tab.component.test.js (100%)
rename ui/{app => }/pages/settings/advanced-tab/advanced-tab.container.js (100%)
rename ui/{app => }/pages/settings/advanced-tab/index.js (100%)
rename ui/{app => }/pages/settings/alerts-tab/alerts-tab.js (96%)
rename ui/{app => }/pages/settings/alerts-tab/alerts-tab.scss (100%)
rename ui/{app => }/pages/settings/alerts-tab/index.js (100%)
rename ui/{app => }/pages/settings/contact-list-tab/add-contact/add-contact.component.js (98%)
rename ui/{app => }/pages/settings/contact-list-tab/add-contact/add-contact.container.js (100%)
rename ui/{app => }/pages/settings/contact-list-tab/add-contact/index.js (100%)
rename ui/{app => }/pages/settings/contact-list-tab/contact-list-tab.component.js (100%)
rename ui/{app => }/pages/settings/contact-list-tab/contact-list-tab.container.js (89%)
rename ui/{app => }/pages/settings/contact-list-tab/edit-contact/edit-contact.component.js (98%)
rename ui/{app => }/pages/settings/contact-list-tab/edit-contact/edit-contact.container.js (100%)
rename ui/{app => }/pages/settings/contact-list-tab/edit-contact/index.js (100%)
rename ui/{app => }/pages/settings/contact-list-tab/index.js (100%)
rename ui/{app => }/pages/settings/contact-list-tab/index.scss (100%)
rename ui/{app => }/pages/settings/contact-list-tab/view-contact/index.js (100%)
rename ui/{app => }/pages/settings/contact-list-tab/view-contact/view-contact.component.js (100%)
rename ui/{app => }/pages/settings/contact-list-tab/view-contact/view-contact.container.js (92%)
rename ui/{app => }/pages/settings/index.js (100%)
rename ui/{app => }/pages/settings/index.scss (100%)
rename ui/{app => }/pages/settings/info-tab/index.js (100%)
rename ui/{app => }/pages/settings/info-tab/index.scss (100%)
rename ui/{app => }/pages/settings/info-tab/info-tab.component.js (100%)
rename ui/{app => }/pages/settings/networks-tab/index.js (100%)
rename ui/{app => }/pages/settings/networks-tab/index.scss (100%)
rename ui/{app => }/pages/settings/networks-tab/network-form/index.js (100%)
rename ui/{app => }/pages/settings/networks-tab/network-form/network-form.component.js (99%)
rename ui/{app => }/pages/settings/networks-tab/networks-tab.component.js (99%)
rename ui/{app => }/pages/settings/networks-tab/networks-tab.constants.js (96%)
rename ui/{app => }/pages/settings/networks-tab/networks-tab.container.js (93%)
rename ui/{app => }/pages/settings/security-tab/index.js (100%)
rename ui/{app => }/pages/settings/security-tab/security-tab.component.js (100%)
rename ui/{app => }/pages/settings/security-tab/security-tab.container.js (100%)
rename ui/{app => }/pages/settings/security-tab/security-tab.container.test.js (100%)
rename ui/{app => }/pages/settings/settings-tab/index.js (100%)
rename ui/{app => }/pages/settings/settings-tab/index.scss (100%)
rename ui/{app => }/pages/settings/settings-tab/settings-tab.component.js (99%)
rename ui/{app => }/pages/settings/settings-tab/settings-tab.container.js (100%)
rename ui/{app => }/pages/settings/settings-tab/settings-tab.container.test.js (100%)
rename ui/{app => }/pages/settings/settings.component.js (100%)
rename ui/{app => }/pages/settings/settings.container.js (92%)
rename ui/{app => }/pages/swaps/__snapshots__/index.test.js.snap (100%)
rename ui/{app => }/pages/swaps/actionable-message/__snapshots__/actionable-message.test.js.snap (100%)
rename ui/{app => }/pages/swaps/actionable-message/actionable-message.js (100%)
rename ui/{app => }/pages/swaps/actionable-message/actionable-message.stories.js (100%)
rename ui/{app => }/pages/swaps/actionable-message/actionable-message.test.js (89%)
rename ui/{app => }/pages/swaps/actionable-message/index.js (100%)
rename ui/{app => }/pages/swaps/actionable-message/index.scss (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/__snapshots__/awaiting-swap.test.js.snap (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/__snapshots__/quotes-timeout-icon.test.js.snap (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/__snapshots__/swap-failure-icon.test.js.snap (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/__snapshots__/swap-success-icon.test.js.snap (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/awaiting-swap.js (97%)
rename ui/{app => }/pages/swaps/awaiting-swap/awaiting-swap.test.js (96%)
rename ui/{app => }/pages/swaps/awaiting-swap/index.js (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/index.scss (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/quotes-timeout-icon.js (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/quotes-timeout-icon.test.js (81%)
rename ui/{app => }/pages/swaps/awaiting-swap/swap-failure-icon.js (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/swap-failure-icon.test.js (81%)
rename ui/{app => }/pages/swaps/awaiting-swap/swap-success-icon.js (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/swap-success-icon.test.js (81%)
rename ui/{app => }/pages/swaps/awaiting-swap/view-on-ether-scan-link/__snapshots__/view-on-ether-scan-link.test.js.snap (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/view-on-ether-scan-link/index.js (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.js (100%)
rename ui/{app => }/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.test.js (94%)
rename ui/{app => }/pages/swaps/build-quote/__snapshots__/build-quote.test.js.snap (100%)
rename ui/{app => }/pages/swaps/build-quote/build-quote.js (99%)
rename ui/{app => }/pages/swaps/build-quote/build-quote.stories.js (100%)
rename ui/{app => }/pages/swaps/build-quote/build-quote.test.js (97%)
rename ui/{app => }/pages/swaps/build-quote/index.js (100%)
rename ui/{app => }/pages/swaps/build-quote/index.scss (100%)
rename ui/{app => }/pages/swaps/countdown-timer/countdown-timer.js (100%)
rename ui/{app => }/pages/swaps/countdown-timer/countdown-timer.stories.js (100%)
rename ui/{app => }/pages/swaps/countdown-timer/countdown-timer.test.js (95%)
rename ui/{app => }/pages/swaps/countdown-timer/index.js (100%)
rename ui/{app => }/pages/swaps/countdown-timer/index.scss (100%)
rename ui/{app => }/pages/swaps/dropdown-input-pair/__snapshots__/dropdown-input-pair.test.js.snap (100%)
rename ui/{app => }/pages/swaps/dropdown-input-pair/dropdown-input-pair.js (100%)
rename ui/{app => }/pages/swaps/dropdown-input-pair/dropdown-input-pair.stories.js (100%)
rename ui/{app => }/pages/swaps/dropdown-input-pair/dropdown-input-pair.test.js (89%)
rename ui/{app => }/pages/swaps/dropdown-input-pair/index.js (100%)
rename ui/{app => }/pages/swaps/dropdown-input-pair/index.scss (100%)
rename ui/{app => }/pages/swaps/dropdown-search-list/__snapshots__/dropdown-search-list.test.js.snap (100%)
rename ui/{app => }/pages/swaps/dropdown-search-list/dropdown-search-list.js (100%)
rename ui/{app => }/pages/swaps/dropdown-search-list/dropdown-search-list.stories.js (100%)
rename ui/{app => }/pages/swaps/dropdown-search-list/dropdown-search-list.test.js (89%)
rename ui/{app => }/pages/swaps/dropdown-search-list/index.js (100%)
rename ui/{app => }/pages/swaps/dropdown-search-list/index.scss (100%)
rename ui/{app => }/pages/swaps/exchange-rate-display/__snapshots__/exchange-rate-display.test.js.snap (100%)
rename ui/{app => }/pages/swaps/exchange-rate-display/exchange-rate-display.js (100%)
rename ui/{app => }/pages/swaps/exchange-rate-display/exchange-rate-display.stories.js (100%)
rename ui/{app => }/pages/swaps/exchange-rate-display/exchange-rate-display.test.js (92%)
rename ui/{app => }/pages/swaps/exchange-rate-display/index.js (100%)
rename ui/{app => }/pages/swaps/exchange-rate-display/index.scss (100%)
rename ui/{app => }/pages/swaps/fee-card/__snapshots__/fee-card.test.js.snap (100%)
rename ui/{app => }/pages/swaps/fee-card/fee-card.js (99%)
rename ui/{app => }/pages/swaps/fee-card/fee-card.stories.js (100%)
rename ui/{app => }/pages/swaps/fee-card/fee-card.test.js (92%)
rename ui/{app => }/pages/swaps/fee-card/index.js (100%)
rename ui/{app => }/pages/swaps/fee-card/index.scss (100%)
rename ui/{app => }/pages/swaps/fee-card/pig-icon.js (100%)
rename ui/{app => }/pages/swaps/fee-card/pig-icon.test.js (80%)
rename ui/{app => }/pages/swaps/index.js (99%)
rename ui/{app => }/pages/swaps/index.scss (100%)
rename ui/{app => }/pages/swaps/index.test.js (98%)
create mode 100644 ui/pages/swaps/intro-popup/__snapshots__/intro-popup.test.js.snap
create mode 100644 ui/pages/swaps/intro-popup/index.js
create mode 100644 ui/pages/swaps/intro-popup/index.scss
create mode 100644 ui/pages/swaps/intro-popup/intro-popup.js
create mode 100644 ui/pages/swaps/intro-popup/intro-popup.test.js
rename ui/{app => }/pages/swaps/loading-swaps-quotes/__snapshots__/aggregator-logo.test.js.snap (100%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/__snapshots__/loading-swaps-quotes-stories-metadata.test.js.snap (100%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/aggregator-logo.js (100%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/aggregator-logo.test.js (98%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/background-animation.js (100%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/background-animation.test.js (85%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/index.js (100%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/index.scss (100%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.js (100%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.test.js (100%)
rename ui/{app => }/pages/swaps/loading-swaps-quotes/loading-swaps-quotes.js (100%)
rename ui/{app => }/pages/swaps/main-quote-summary/__snapshots__/main-quote-summary.test.js.snap (100%)
rename ui/{app => }/pages/swaps/main-quote-summary/__snapshots__/quote-backdrop.test.js.snap (100%)
rename ui/{app => }/pages/swaps/main-quote-summary/index.js (100%)
rename ui/{app => }/pages/swaps/main-quote-summary/index.scss (100%)
rename ui/{app => }/pages/swaps/main-quote-summary/main-quote-summary.js (100%)
rename ui/{app => }/pages/swaps/main-quote-summary/main-quote-summary.stories.js (100%)
rename ui/{app => }/pages/swaps/main-quote-summary/main-quote-summary.test.js (94%)
rename ui/{app => }/pages/swaps/main-quote-summary/quote-backdrop.js (100%)
rename ui/{app => }/pages/swaps/main-quote-summary/quote-backdrop.test.js (90%)
rename ui/{app => }/pages/swaps/searchable-item-list/__snapshots__/searchable-item-list.test.js.snap (100%)
rename ui/{app => }/pages/swaps/searchable-item-list/index.js (100%)
rename ui/{app => }/pages/swaps/searchable-item-list/index.scss (100%)
rename ui/{app => }/pages/swaps/searchable-item-list/item-list/index.js (100%)
rename ui/{app => }/pages/swaps/searchable-item-list/item-list/item-list.component.js (100%)
rename ui/{app => }/pages/swaps/searchable-item-list/list-item-search/index.js (100%)
rename ui/{app => }/pages/swaps/searchable-item-list/list-item-search/list-item-search.component.js (100%)
rename ui/{app => }/pages/swaps/searchable-item-list/searchable-item-list.js (100%)
rename ui/{app => }/pages/swaps/searchable-item-list/searchable-item-list.test.js (96%)
rename ui/{app => }/pages/swaps/select-quote-popover/__snapshots__/select-quote-popover.test.js.snap (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/index.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/index.scss (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/mock-quote-data.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/mock-quote-data.test.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/quote-details/index.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/quote-details/index.scss (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/quote-details/quote-details.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/select-quote-popover-constants.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/select-quote-popover.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/select-quote-popover.stories.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/select-quote-popover.test.js (89%)
rename ui/{app => }/pages/swaps/select-quote-popover/sort-list/__snapshots__/sort-list.test.js.snap (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/sort-list/index.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/sort-list/sort-list.js (100%)
rename ui/{app => }/pages/swaps/select-quote-popover/sort-list/sort-list.test.js (97%)
rename ui/{app => }/pages/swaps/slippage-buttons/__snapshots__/slippage-buttons.test.js.snap (100%)
rename ui/{app => }/pages/swaps/slippage-buttons/index.js (100%)
rename ui/{app => }/pages/swaps/slippage-buttons/index.scss (100%)
rename ui/{app => }/pages/swaps/slippage-buttons/slippage-buttons.js (100%)
rename ui/{app => }/pages/swaps/slippage-buttons/slippage-buttons.stories.js (100%)
rename ui/{app => }/pages/swaps/slippage-buttons/slippage-buttons.test.js (93%)
rename ui/{app => }/pages/swaps/swaps-footer/__snapshots__/swaps-footer.test.js.snap (100%)
rename ui/{app => }/pages/swaps/swaps-footer/index.js (100%)
rename ui/{app => }/pages/swaps/swaps-footer/index.scss (100%)
rename ui/{app => }/pages/swaps/swaps-footer/swaps-footer.js (100%)
rename ui/{app => }/pages/swaps/swaps-footer/swaps-footer.test.js (91%)
rename ui/{app => }/pages/swaps/swaps-gas-customization-modal/index.js (100%)
rename ui/{app => }/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.js (100%)
rename ui/{app => }/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.js (100%)
rename ui/{app => }/pages/swaps/swaps-util-test-constants.js (99%)
rename ui/{app => }/pages/swaps/swaps.util.js (98%)
rename ui/{app => }/pages/swaps/swaps.util.test.js (98%)
rename ui/{app => }/pages/swaps/view-quote/index.js (100%)
rename ui/{app => }/pages/swaps/view-quote/index.scss (100%)
rename ui/{app => }/pages/swaps/view-quote/view-quote-price-difference.js (100%)
rename ui/{app => }/pages/swaps/view-quote/view-quote-price-difference.test.js (98%)
rename ui/{app => }/pages/swaps/view-quote/view-quote.js (99%)
rename ui/{app => }/pages/unlock-page/index.js (100%)
rename ui/{app => }/pages/unlock-page/index.scss (100%)
rename ui/{app => }/pages/unlock-page/unlock-page.component.js (100%)
rename ui/{app => }/pages/unlock-page/unlock-page.component.test.js (91%)
rename ui/{app => }/pages/unlock-page/unlock-page.container.js (92%)
rename ui/{app => }/pages/unlock-page/unlock-page.container.test.js (100%)
rename ui/{app => }/selectors/confirm-transaction.js (98%)
rename ui/{app => }/selectors/confirm-transaction.test.js (95%)
rename ui/{app => }/selectors/custom-gas.js (99%)
rename ui/{app => }/selectors/custom-gas.test.js (100%)
rename ui/{app => }/selectors/first-time-flow.js (100%)
rename ui/{app => }/selectors/index.js (100%)
rename ui/{app => }/selectors/permissions.js (99%)
rename ui/{app => }/selectors/permissions.test.js (99%)
rename ui/{app => }/selectors/selectors.js (98%)
rename ui/{app => }/selectors/selectors.test.js (98%)
rename ui/{app => }/selectors/send-selectors-test-data.js (98%)
rename ui/{app => }/selectors/send.js (100%)
rename ui/{app => }/selectors/send.test.js (99%)
rename ui/{app => }/selectors/transactions.js (98%)
rename ui/{app => }/selectors/transactions.test.js (98%)
rename ui/{app => }/store/actionConstants.js (100%)
rename ui/{app => }/store/actionConstants.test.js (96%)
rename ui/{app => }/store/actions.js (98%)
rename ui/{app => }/store/actions.test.js (99%)
rename ui/{app => }/store/store.js (100%)
diff --git a/.eslintrc.js b/.eslintrc.js
index 8b9f27b12..fa67adaaf 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -108,7 +108,7 @@ module.exports = {
},
{
files: ['**/*.test.js'],
- excludedFiles: ['ui/**/*.test.js', 'ui/app/__mocks__/*.js'],
+ excludedFiles: ['ui/**/*.test.js', 'ui/__mocks__/*.js'],
extends: ['@metamask/eslint-config-mocha'],
rules: {
'mocha/no-setup-in-describe': 'off',
@@ -125,7 +125,7 @@ module.exports = {
},
},
{
- files: ['ui/**/*.test.js', 'ui/app/__mocks__/*.js'],
+ files: ['ui/**/*.test.js', 'ui/__mocks__/*.js'],
extends: ['@metamask/eslint-config-jest'],
rules: {
'jest/no-restricted-matchers': 'off',
diff --git a/.gitignore b/.gitignore
index 6333a39a1..21c882a97 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,7 +39,7 @@ test-builds
build-artifacts
#ignore css output and sourcemaps
-ui/app/css/output/
+ui/css/output/
notes.txt
diff --git a/.storybook/i18n.js b/.storybook/i18n.js
index 9eadca331..314ea544e 100644
--- a/.storybook/i18n.js
+++ b/.storybook/i18n.js
@@ -1,12 +1,12 @@
import React, { Component, createContext, useMemo } from 'react';
import PropTypes from 'prop-types';
-import { getMessage } from '../ui/app/helpers/utils/i18n-helper';
-import { I18nContext } from '../ui/app/contexts/i18n';
+import { getMessage } from '../ui/helpers/utils/i18n-helper';
+import { I18nContext } from '../ui/contexts/i18n';
-export { I18nContext }
+export { I18nContext };
export const I18nProvider = (props) => {
- const { currentLocale, current, en } = props
+ const { currentLocale, current, en } = props;
const t = useMemo(() => {
return (key, ...args) =>
diff --git a/.storybook/main.js b/.storybook/main.js
index 2e708e264..310bce17d 100644
--- a/.storybook/main.js
+++ b/.storybook/main.js
@@ -1,9 +1,9 @@
-const path = require('path')
+const path = require('path');
-const CopyWebpackPlugin = require('copy-webpack-plugin')
+const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
- stories: ['../ui/app/**/*.stories.js'],
+ stories: ['../ui/**/*.stories.js'],
addons: [
'@storybook/addon-knobs',
'@storybook/addon-actions',
@@ -12,7 +12,7 @@ module.exports = {
'./i18n-party-addon/register.js',
],
webpackFinal: async (config) => {
- config.module.strictExportPresence = true
+ config.module.strictExportPresence = true;
config.module.rules.push({
test: /\.scss$/,
loaders: [
@@ -31,12 +31,12 @@ module.exports = {
sourceMap: true,
implementation: require('sass'),
sassOptions: {
- includePaths: ['ui/app/css/'],
+ includePaths: ['ui/css/'],
},
},
},
],
- })
+ });
config.plugins.push(
new CopyWebpackPlugin({
patterns: [
@@ -51,7 +51,7 @@ module.exports = {
},
],
}),
- )
- return config
+ );
+ return config;
},
-}
+};
diff --git a/.storybook/preview.js b/.storybook/preview.js
index 112c8f16e..24d195c4e 100644
--- a/.storybook/preview.js
+++ b/.storybook/preview.js
@@ -3,12 +3,12 @@ import { addDecorator, addParameters } from '@storybook/react';
import { useGlobals } from '@storybook/api';
import { withKnobs } from '@storybook/addon-knobs';
import { Provider } from 'react-redux';
-import configureStore from '../ui/app/store/store';
-import '../ui/app/css/index.scss';
+import configureStore from '../ui/store/store';
+import '../ui/css/index.scss';
import localeList from '../app/_locales/index.json';
import * as allLocales from './locales';
import { I18nProvider, LegacyI18nProvider } from './i18n';
-import testData from './test-data.js'
+import testData from './test-data.js';
addParameters({
backgrounds: {
@@ -41,7 +41,7 @@ const styles = {
alignItems: 'center',
};
-const store = configureStore(testData)
+const store = configureStore(testData);
const metamaskDecorator = (story, context) => {
const currentLocale = context.globals.locale;
diff --git a/app/scripts/controllers/swaps.js b/app/scripts/controllers/swaps.js
index 2496e9b0b..9e4247231 100644
--- a/app/scripts/controllers/swaps.js
+++ b/app/scripts/controllers/swaps.js
@@ -4,9 +4,9 @@ import BigNumber from 'bignumber.js';
import { ObservableStore } from '@metamask/obs-store';
import { mapValues, cloneDeep } from 'lodash';
import abi from 'human-standard-token-abi';
-import { calcTokenAmount } from '../../../ui/app/helpers/utils/token-util';
-import { calcGasTotal } from '../../../ui/app/pages/send/send.utils';
-import { conversionUtil } from '../../../ui/app/helpers/utils/conversion-util';
+import { calcTokenAmount } from '../../../ui/helpers/utils/token-util';
+import { calcGasTotal } from '../../../ui/pages/send/send.utils';
+import { conversionUtil } from '../../../ui/helpers/utils/conversion-util';
import {
DEFAULT_ERC20_APPROVE_GAS,
QUOTES_EXPIRED_ERROR,
@@ -20,7 +20,7 @@ import {
fetchTradesInfo as defaultFetchTradesInfo,
fetchSwapsFeatureLiveness as defaultFetchSwapsFeatureLiveness,
fetchSwapsQuoteRefreshTime as defaultFetchSwapsQuoteRefreshTime,
-} from '../../../ui/app/pages/swaps/swaps.util';
+} from '../../../ui/pages/swaps/swaps.util';
import { NETWORK_EVENTS } from './network';
// The MAX_GAS_LIMIT is a number that is higher than the maximum gas costs we have observed on any aggregator
diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js
index 3067b3e4f..9b7011a66 100644
--- a/app/scripts/controllers/transactions/index.js
+++ b/app/scripts/controllers/transactions/index.js
@@ -16,8 +16,8 @@ import {
BnMultiplyByFraction,
addHexPrefix,
} from '../../lib/util';
-import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/app/helpers/constants/error-keys';
-import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/app/pages/swaps/swaps.util';
+import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/helpers/constants/error-keys';
+import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/pages/swaps/swaps.util';
import {
TRANSACTION_STATUSES,
TRANSACTION_TYPES,
diff --git a/development/build/static.js b/development/build/static.js
index 0adba6745..9ae309e53 100644
--- a/development/build/static.js
+++ b/development/build/static.js
@@ -35,7 +35,7 @@ const copyTargets = [
dest: `fonts/fontawesome`,
},
{
- src: `./ui/app/css/output/`,
+ src: `./ui/css/output/`,
pattern: `*.css`,
dest: ``,
},
diff --git a/development/build/styles.js b/development/build/styles.js
index 108561261..ecda4b661 100644
--- a/development/build/styles.js
+++ b/development/build/styles.js
@@ -18,8 +18,8 @@ function createStyleTasks({ livereload }) {
const prod = createTask(
'styles:prod',
createScssBuildTask({
- src: 'ui/app/css/index.scss',
- dest: 'ui/app/css/output',
+ src: 'ui/css/index.scss',
+ dest: 'ui/css/output',
devMode: false,
}),
);
@@ -27,15 +27,15 @@ function createStyleTasks({ livereload }) {
const dev = createTask(
'styles:dev',
createScssBuildTask({
- src: 'ui/app/css/index.scss',
- dest: 'ui/app/css/output',
+ src: 'ui/css/index.scss',
+ dest: 'ui/css/output',
devMode: true,
- pattern: 'ui/app/**/*.scss',
+ pattern: 'ui/**/*.scss',
}),
);
const lint = createTask('lint-scss', function () {
- return gulp.src('ui/app/css/itcss/**/*.scss').pipe(
+ return gulp.src('ui/css/itcss/**/*.scss').pipe(
gulpStylelint({
reporters: [{ formatter: 'string', console: true }],
fix: true,
diff --git a/development/verify-locale-strings.js b/development/verify-locale-strings.js
index 2e7b7584b..a37a7936e 100644
--- a/development/verify-locale-strings.js
+++ b/development/verify-locale-strings.js
@@ -171,8 +171,8 @@ async function verifyEnglishLocale() {
// In the meantime we'll use glob to specify which paths can be strict searched
// and gradually phase out the key based search
const globsToStrictSearch = [
- 'ui/app/components/app/metamask-translation/*.js',
- 'ui/app/pages/confirmation/templates/*.js',
+ 'ui/components/app/metamask-translation/*.js',
+ 'ui/pages/confirmation/templates/*.js',
];
const testGlob = '**/*.test.js';
const javascriptFiles = await glob(['ui/**/*.js', 'shared/**/*.js'], {
diff --git a/jest.config.js b/jest.config.js
index df0558fcf..e186bc814 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -1,7 +1,7 @@
module.exports = {
restoreMocks: true,
coverageDirectory: 'jest-coverage/',
- collectCoverageFrom: ['/ui/app/**/swaps/**'],
+ collectCoverageFrom: ['/ui/**/swaps/**'],
coveragePathIgnorePatterns: ['.stories.js', '.snap'],
coverageThreshold: {
global: {
diff --git a/package.json b/package.json
index f6e3c4dc6..9ca5d612f 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"verify-locales": "node ./development/verify-locale-strings.js",
"verify-locales:fix": "node ./development/verify-locale-strings.js --fix",
"mozilla-lint": "addons-linter dist/firefox",
- "watch": "mocha --watch --require test/env.js --require test/setup.js --reporter min --recursive \"test/unit/**/*.js\" \"ui/app/**/*.test.js\" \"shared/**/*.test.js\"",
+ "watch": "mocha --watch --require test/env.js --require test/setup.js --reporter min --recursive \"test/unit/**/*.js\" \"ui/**/*.test.js\" \"shared/**/*.test.js\"",
"devtools:react": "react-devtools",
"devtools:redux": "remotedev --hostname=localhost --port=8000",
"start:dev": "concurrently -k -n build,react,redux yarn:start yarn:devtools:react yarn:devtools:redux",
diff --git a/test/jest/background.js b/test/jest/background.js
index 49a6bdf8f..99d181308 100644
--- a/test/jest/background.js
+++ b/test/jest/background.js
@@ -1,4 +1,4 @@
-import * as actions from '../../ui/app/store/actions';
+import * as actions from '../../ui/store/actions';
export const setBackgroundConnection = (backgroundConnection = {}) => {
actions._setBackgroundConnection(backgroundConnection);
diff --git a/test/jest/rendering.js b/test/jest/rendering.js
index d215cbc0d..f84ecfe0b 100644
--- a/test/jest/rendering.js
+++ b/test/jest/rendering.js
@@ -4,8 +4,8 @@ import { render } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
import PropTypes from 'prop-types';
-import { I18nContext, LegacyI18nProvider } from '../../ui/app/contexts/i18n';
-import { getMessage } from '../../ui/app/helpers/utils/i18n-helper';
+import { I18nContext, LegacyI18nProvider } from '../../ui/contexts/i18n';
+import { getMessage } from '../../ui/helpers/utils/i18n-helper';
import * as en from '../../app/_locales/en/messages.json';
export const I18nProvider = (props) => {
diff --git a/test/lib/render-helpers.js b/test/lib/render-helpers.js
index fc4621015..37c5d6370 100644
--- a/test/lib/render-helpers.js
+++ b/test/lib/render-helpers.js
@@ -1,13 +1,19 @@
import React, { useMemo } from 'react';
import { Provider } from 'react-redux';
import { render } from '@testing-library/react';
-import { mount } from 'enzyme';
+import { mount, shallow } from 'enzyme';
import { MemoryRouter } from 'react-router-dom';
import PropTypes from 'prop-types';
-import { I18nContext, LegacyI18nProvider } from '../../ui/app/contexts/i18n';
-import { getMessage } from '../../ui/app/helpers/utils/i18n-helper';
+import { I18nContext, LegacyI18nProvider } from '../../ui/contexts/i18n';
+import { getMessage } from '../../ui/helpers/utils/i18n-helper';
import * as en from '../../app/_locales/en/messages.json';
+export function shallowWithContext(jsxComponent) {
+ return shallow(jsxComponent, {
+ context: { t: (str1, str2) => (str2 ? str1 + str2 : str1) },
+ });
+}
+
export function mountWithRouter(component, store = {}, pathname = '/') {
// Instantiate router context
const router = {
diff --git a/test/unit-global/balance-formatter.test.js b/test/unit-global/balance-formatter.test.js
index cd63ee68f..d96668e3b 100644
--- a/test/unit-global/balance-formatter.test.js
+++ b/test/unit-global/balance-formatter.test.js
@@ -1,6 +1,6 @@
import assert from 'assert';
import currencyFormatter from 'currency-formatter';
-import availableCurrencies from '../../ui/app/helpers/constants/available-conversions.json';
+import availableCurrencies from '../../ui/helpers/constants/available-conversions.json';
describe('currencyFormatting', function () {
it('be able to format any infura currency', function (done) {
diff --git a/ui/app/__mocks__/react-router-dom.js b/ui/__mocks__/react-router-dom.js
similarity index 100%
rename from ui/app/__mocks__/react-router-dom.js
rename to ui/__mocks__/react-router-dom.js
diff --git a/ui/app/components/app/signature-request/signature-request.constants.js b/ui/app/components/app/signature-request/signature-request.constants.js
deleted file mode 100644
index 34ac7b40d..000000000
--- a/ui/app/components/app/signature-request/signature-request.constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../../shared/constants/app';
-
-export { ENVIRONMENT_TYPE_NOTIFICATION };
diff --git a/ui/app/components/app/account-list-item/account-list-item-component.test.js b/ui/components/app/account-list-item/account-list-item-component.test.js
similarity index 96%
rename from ui/app/components/app/account-list-item/account-list-item-component.test.js
rename to ui/components/app/account-list-item/account-list-item-component.test.js
index 03c038cf4..d8a05ce46 100644
--- a/ui/app/components/app/account-list-item/account-list-item-component.test.js
+++ b/ui/components/app/account-list-item/account-list-item-component.test.js
@@ -2,10 +2,10 @@ import React from 'react';
import { shallow } from 'enzyme';
import sinon from 'sinon';
import Identicon from '../../ui/identicon';
-import { toChecksumHexAddress } from '../../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
import AccountListItem from './account-list-item';
-jest.mock('../../../../../shared/modules/hexstring-utils', () => ({
+jest.mock('../../../../shared/modules/hexstring-utils', () => ({
toChecksumHexAddress: jest.fn(() => 'mockCheckSumAddress'),
}));
diff --git a/ui/app/components/app/account-list-item/account-list-item.js b/ui/components/app/account-list-item/account-list-item.js
similarity index 93%
rename from ui/app/components/app/account-list-item/account-list-item.js
rename to ui/components/app/account-list-item/account-list-item.js
index fd1b80bc4..5220dede9 100644
--- a/ui/app/components/app/account-list-item/account-list-item.js
+++ b/ui/components/app/account-list-item/account-list-item.js
@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import Identicon from '../../ui/identicon';
import AccountMismatchWarning from '../../ui/account-mismatch-warning/account-mismatch-warning.component';
-import { toChecksumHexAddress } from '../../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
export default function AccountListItem({
account,
diff --git a/ui/app/components/app/account-list-item/index.js b/ui/components/app/account-list-item/index.js
similarity index 100%
rename from ui/app/components/app/account-list-item/index.js
rename to ui/components/app/account-list-item/index.js
diff --git a/ui/app/components/app/account-list-item/index.scss b/ui/components/app/account-list-item/index.scss
similarity index 100%
rename from ui/app/components/app/account-list-item/index.scss
rename to ui/components/app/account-list-item/index.scss
diff --git a/ui/app/components/app/account-menu/account-menu.component.js b/ui/components/app/account-menu/account-menu.component.js
similarity index 98%
rename from ui/app/components/app/account-menu/account-menu.component.js
rename to ui/components/app/account-menu/account-menu.component.js
index fe3ebffe6..a7f083041 100644
--- a/ui/app/components/app/account-menu/account-menu.component.js
+++ b/ui/components/app/account-menu/account-menu.component.js
@@ -4,8 +4,8 @@ import { debounce } from 'lodash';
import Fuse from 'fuse.js';
import InputAdornment from '@material-ui/core/InputAdornment';
import classnames from 'classnames';
-import { ENVIRONMENT_TYPE_POPUP } from '../../../../../shared/constants/app';
-import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../../app/scripts/lib/util';
import Identicon from '../../ui/identicon';
import SiteIcon from '../../ui/site-icon';
import UserPreferencedCurrencyDisplay from '../user-preferenced-currency-display';
diff --git a/ui/app/components/app/account-menu/account-menu.container.js b/ui/components/app/account-menu/account-menu.container.js
similarity index 100%
rename from ui/app/components/app/account-menu/account-menu.container.js
rename to ui/components/app/account-menu/account-menu.container.js
diff --git a/ui/app/components/app/account-menu/account-menu.test.js b/ui/components/app/account-menu/account-menu.test.js
similarity index 98%
rename from ui/app/components/app/account-menu/account-menu.test.js
rename to ui/components/app/account-menu/account-menu.test.js
index 44666899d..fc715ead1 100644
--- a/ui/app/components/app/account-menu/account-menu.test.js
+++ b/ui/components/app/account-menu/account-menu.test.js
@@ -2,7 +2,7 @@ import React from 'react';
import sinon from 'sinon';
import configureMockStore from 'redux-mock-store';
import { Provider } from 'react-redux';
-import { mountWithRouter } from '../../../../../test/lib/render-helpers';
+import { mountWithRouter } from '../../../../test/lib/render-helpers';
import AccountMenu from '.';
describe('Account Menu', () => {
diff --git a/ui/app/components/app/account-menu/index.js b/ui/components/app/account-menu/index.js
similarity index 100%
rename from ui/app/components/app/account-menu/index.js
rename to ui/components/app/account-menu/index.js
diff --git a/ui/app/components/app/account-menu/index.scss b/ui/components/app/account-menu/index.scss
similarity index 100%
rename from ui/app/components/app/account-menu/index.scss
rename to ui/components/app/account-menu/index.scss
diff --git a/ui/app/components/app/add-token-button/add-token-button.component.js b/ui/components/app/add-token-button/add-token-button.component.js
similarity index 100%
rename from ui/app/components/app/add-token-button/add-token-button.component.js
rename to ui/components/app/add-token-button/add-token-button.component.js
diff --git a/ui/app/components/app/add-token-button/index.js b/ui/components/app/add-token-button/index.js
similarity index 100%
rename from ui/app/components/app/add-token-button/index.js
rename to ui/components/app/add-token-button/index.js
diff --git a/ui/app/components/app/add-token-button/index.scss b/ui/components/app/add-token-button/index.scss
similarity index 100%
rename from ui/app/components/app/add-token-button/index.scss
rename to ui/components/app/add-token-button/index.scss
diff --git a/ui/app/components/app/alerts/alerts.js b/ui/components/app/alerts/alerts.js
similarity index 100%
rename from ui/app/components/app/alerts/alerts.js
rename to ui/components/app/alerts/alerts.js
diff --git a/ui/app/components/app/alerts/alerts.scss b/ui/components/app/alerts/alerts.scss
similarity index 100%
rename from ui/app/components/app/alerts/alerts.scss
rename to ui/components/app/alerts/alerts.scss
diff --git a/ui/app/components/app/alerts/index.js b/ui/components/app/alerts/index.js
similarity index 100%
rename from ui/app/components/app/alerts/index.js
rename to ui/components/app/alerts/index.js
diff --git a/ui/app/components/app/alerts/invalid-custom-network-alert/index.js b/ui/components/app/alerts/invalid-custom-network-alert/index.js
similarity index 100%
rename from ui/app/components/app/alerts/invalid-custom-network-alert/index.js
rename to ui/components/app/alerts/invalid-custom-network-alert/index.js
diff --git a/ui/app/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.js b/ui/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.js
similarity index 100%
rename from ui/app/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.js
rename to ui/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.js
diff --git a/ui/app/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.scss b/ui/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.scss
similarity index 100%
rename from ui/app/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.scss
rename to ui/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.scss
diff --git a/ui/app/components/app/alerts/unconnected-account-alert/index.js b/ui/components/app/alerts/unconnected-account-alert/index.js
similarity index 100%
rename from ui/app/components/app/alerts/unconnected-account-alert/index.js
rename to ui/components/app/alerts/unconnected-account-alert/index.js
diff --git a/ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.js b/ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.js
similarity index 100%
rename from ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.js
rename to ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.js
diff --git a/ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.scss b/ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.scss
similarity index 100%
rename from ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.scss
rename to ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.scss
diff --git a/ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js b/ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js
similarity index 95%
rename from ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js
rename to ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js
index dda361f4a..3aad2342b 100644
--- a/ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js
+++ b/ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js
@@ -6,11 +6,11 @@ import thunk from 'redux-thunk';
import { fireEvent } from '@testing-library/react';
import configureMockStore from 'redux-mock-store';
-import { tick } from '../../../../../../test/lib/tick';
-import { renderWithProvider } from '../../../../../../test/lib/render-helpers';
+import { tick } from '../../../../../test/lib/tick';
+import { renderWithProvider } from '../../../../../test/lib/render-helpers';
import * as actions from '../../../../store/actions';
-import { KOVAN_CHAIN_ID } from '../../../../../../shared/constants/network';
+import { KOVAN_CHAIN_ID } from '../../../../../shared/constants/network';
import UnconnectedAccountAlert from '.';
describe('Unconnected Account Alert', () => {
diff --git a/ui/app/components/app/app-components.scss b/ui/components/app/app-components.scss
similarity index 100%
rename from ui/app/components/app/app-components.scss
rename to ui/components/app/app-components.scss
diff --git a/ui/app/components/app/app-header/app-header.component.js b/ui/components/app/app-header/app-header.component.js
similarity index 100%
rename from ui/app/components/app/app-header/app-header.component.js
rename to ui/components/app/app-header/app-header.component.js
diff --git a/ui/app/components/app/app-header/app-header.container.js b/ui/components/app/app-header/app-header.container.js
similarity index 100%
rename from ui/app/components/app/app-header/app-header.container.js
rename to ui/components/app/app-header/app-header.container.js
diff --git a/ui/app/components/app/app-header/app-header.test.js b/ui/components/app/app-header/app-header.test.js
similarity index 100%
rename from ui/app/components/app/app-header/app-header.test.js
rename to ui/components/app/app-header/app-header.test.js
diff --git a/ui/app/components/app/app-header/index.js b/ui/components/app/app-header/index.js
similarity index 100%
rename from ui/app/components/app/app-header/index.js
rename to ui/components/app/app-header/index.js
diff --git a/ui/app/components/app/app-header/index.scss b/ui/components/app/app-header/index.scss
similarity index 100%
rename from ui/app/components/app/app-header/index.scss
rename to ui/components/app/app-header/index.scss
diff --git a/ui/app/components/app/asset-list-item/asset-list-item.js b/ui/components/app/asset-list-item/asset-list-item.js
similarity index 100%
rename from ui/app/components/app/asset-list-item/asset-list-item.js
rename to ui/components/app/asset-list-item/asset-list-item.js
diff --git a/ui/app/components/app/asset-list-item/asset-list-item.scss b/ui/components/app/asset-list-item/asset-list-item.scss
similarity index 100%
rename from ui/app/components/app/asset-list-item/asset-list-item.scss
rename to ui/components/app/asset-list-item/asset-list-item.scss
diff --git a/ui/app/components/app/asset-list-item/index.js b/ui/components/app/asset-list-item/index.js
similarity index 100%
rename from ui/app/components/app/asset-list-item/index.js
rename to ui/components/app/asset-list-item/index.js
diff --git a/ui/app/components/app/asset-list/asset-list.js b/ui/components/app/asset-list/asset-list.js
similarity index 100%
rename from ui/app/components/app/asset-list/asset-list.js
rename to ui/components/app/asset-list/asset-list.js
diff --git a/ui/app/components/app/asset-list/index.js b/ui/components/app/asset-list/index.js
similarity index 100%
rename from ui/app/components/app/asset-list/index.js
rename to ui/components/app/asset-list/index.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.js b/ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.js
rename to ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.test.js b/ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.test.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.test.js
rename to ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.test.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-detail-row/index.js b/ui/components/app/confirm-page-container/confirm-detail-row/index.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-detail-row/index.js
rename to ui/components/app/confirm-page-container/confirm-detail-row/index.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-detail-row/index.scss b/ui/components/app/confirm-page-container/confirm-detail-row/index.scss
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-detail-row/index.scss
rename to ui/components/app/confirm-page-container/confirm-detail-row/index.scss
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js
rename to ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/confirm-page-container-summary.component.js b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/confirm-page-container-summary.component.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/confirm-page-container-summary.component.js
rename to ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/confirm-page-container-summary.component.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.js b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.js
rename to ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.scss b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.scss
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.scss
rename to ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-summary/index.scss
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/confirm-page-container-warning.component.js b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/confirm-page-container-warning.component.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/confirm-page-container-warning.component.js
rename to ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/confirm-page-container-warning.component.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.js b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.js
rename to ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.scss b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.scss
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.scss
rename to ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-warning/index.scss
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/index.js b/ui/components/app/confirm-page-container/confirm-page-container-content/index.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/index.js
rename to ui/components/app/confirm-page-container/confirm-page-container-content/index.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/index.scss b/ui/components/app/confirm-page-container/confirm-page-container-content/index.scss
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/index.scss
rename to ui/components/app/confirm-page-container/confirm-page-container-content/index.scss
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js b/ui/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js
similarity index 94%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js
rename to ui/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js
index 2054f7daa..05d40a8b1 100644
--- a/ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js
+++ b/ui/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js
@@ -3,8 +3,8 @@ import PropTypes from 'prop-types';
import {
ENVIRONMENT_TYPE_POPUP,
ENVIRONMENT_TYPE_NOTIFICATION,
-} from '../../../../../../shared/constants/app';
-import { getEnvironmentType } from '../../../../../../app/scripts/lib/util';
+} from '../../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
import NetworkDisplay from '../../network-display';
import Identicon from '../../../ui/identicon';
import { shortenAddress } from '../../../../helpers/utils/util';
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js b/ui/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js
similarity index 93%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js
rename to ui/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js
index b94d3d15d..864979f8d 100644
--- a/ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js
+++ b/ui/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.test.js
@@ -3,10 +3,10 @@ import { shallow } from 'enzyme';
import sinon from 'sinon';
import { Provider } from 'react-redux';
import configureStore from '../../../../store/store';
-import testData from '../../../../../../.storybook/test-data';
+import testData from '../../../../../.storybook/test-data';
import ConfirmPageContainerHeader from './confirm-page-container-header.component';
-const util = require('../../../../../../app/scripts/lib/util');
+const util = require('../../../../../app/scripts/lib/util');
describe('Confirm Detail Row Component', () => {
describe('render', () => {
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-header/index.js b/ui/components/app/confirm-page-container/confirm-page-container-header/index.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-header/index.js
rename to ui/components/app/confirm-page-container/confirm-page-container-header/index.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-header/index.scss b/ui/components/app/confirm-page-container/confirm-page-container-header/index.scss
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-header/index.scss
rename to ui/components/app/confirm-page-container/confirm-page-container-header/index.scss
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js b/ui/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js
rename to ui/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/index.js b/ui/components/app/confirm-page-container/confirm-page-container-navigation/index.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-navigation/index.js
rename to ui/components/app/confirm-page-container/confirm-page-container-navigation/index.js
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/index.scss b/ui/components/app/confirm-page-container/confirm-page-container-navigation/index.scss
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container-navigation/index.scss
rename to ui/components/app/confirm-page-container/confirm-page-container-navigation/index.scss
diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container.component.js b/ui/components/app/confirm-page-container/confirm-page-container.component.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/confirm-page-container.component.js
rename to ui/components/app/confirm-page-container/confirm-page-container.component.js
diff --git a/ui/app/components/app/confirm-page-container/index.js b/ui/components/app/confirm-page-container/index.js
similarity index 100%
rename from ui/app/components/app/confirm-page-container/index.js
rename to ui/components/app/confirm-page-container/index.js
diff --git a/ui/app/components/app/confirm-page-container/index.scss b/ui/components/app/confirm-page-container/index.scss
similarity index 100%
rename from ui/app/components/app/confirm-page-container/index.scss
rename to ui/components/app/confirm-page-container/index.scss
diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list-item/connected-accounts-list-item.component.js b/ui/components/app/connected-accounts-list/connected-accounts-list-item/connected-accounts-list-item.component.js
similarity index 100%
rename from ui/app/components/app/connected-accounts-list/connected-accounts-list-item/connected-accounts-list-item.component.js
rename to ui/components/app/connected-accounts-list/connected-accounts-list-item/connected-accounts-list-item.component.js
diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list-item/index.js b/ui/components/app/connected-accounts-list/connected-accounts-list-item/index.js
similarity index 100%
rename from ui/app/components/app/connected-accounts-list/connected-accounts-list-item/index.js
rename to ui/components/app/connected-accounts-list/connected-accounts-list-item/index.js
diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list-options/connected-accounts-list-options.component.js b/ui/components/app/connected-accounts-list/connected-accounts-list-options/connected-accounts-list-options.component.js
similarity index 100%
rename from ui/app/components/app/connected-accounts-list/connected-accounts-list-options/connected-accounts-list-options.component.js
rename to ui/components/app/connected-accounts-list/connected-accounts-list-options/connected-accounts-list-options.component.js
diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list-options/index.js b/ui/components/app/connected-accounts-list/connected-accounts-list-options/index.js
similarity index 100%
rename from ui/app/components/app/connected-accounts-list/connected-accounts-list-options/index.js
rename to ui/components/app/connected-accounts-list/connected-accounts-list-options/index.js
diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list.component.js b/ui/components/app/connected-accounts-list/connected-accounts-list.component.js
similarity index 100%
rename from ui/app/components/app/connected-accounts-list/connected-accounts-list.component.js
rename to ui/components/app/connected-accounts-list/connected-accounts-list.component.js
diff --git a/ui/app/components/app/connected-accounts-list/index.js b/ui/components/app/connected-accounts-list/index.js
similarity index 100%
rename from ui/app/components/app/connected-accounts-list/index.js
rename to ui/components/app/connected-accounts-list/index.js
diff --git a/ui/app/components/app/connected-accounts-list/index.scss b/ui/components/app/connected-accounts-list/index.scss
similarity index 100%
rename from ui/app/components/app/connected-accounts-list/index.scss
rename to ui/components/app/connected-accounts-list/index.scss
diff --git a/ui/app/components/app/connected-accounts-permissions/connected-accounts-permissions.component.js b/ui/components/app/connected-accounts-permissions/connected-accounts-permissions.component.js
similarity index 100%
rename from ui/app/components/app/connected-accounts-permissions/connected-accounts-permissions.component.js
rename to ui/components/app/connected-accounts-permissions/connected-accounts-permissions.component.js
diff --git a/ui/app/components/app/connected-accounts-permissions/index.js b/ui/components/app/connected-accounts-permissions/index.js
similarity index 100%
rename from ui/app/components/app/connected-accounts-permissions/index.js
rename to ui/components/app/connected-accounts-permissions/index.js
diff --git a/ui/app/components/app/connected-accounts-permissions/index.scss b/ui/components/app/connected-accounts-permissions/index.scss
similarity index 100%
rename from ui/app/components/app/connected-accounts-permissions/index.scss
rename to ui/components/app/connected-accounts-permissions/index.scss
diff --git a/ui/app/components/app/connected-sites-list/connected-sites-list.component.js b/ui/components/app/connected-sites-list/connected-sites-list.component.js
similarity index 100%
rename from ui/app/components/app/connected-sites-list/connected-sites-list.component.js
rename to ui/components/app/connected-sites-list/connected-sites-list.component.js
diff --git a/ui/app/components/app/connected-sites-list/index.js b/ui/components/app/connected-sites-list/index.js
similarity index 100%
rename from ui/app/components/app/connected-sites-list/index.js
rename to ui/components/app/connected-sites-list/index.js
diff --git a/ui/app/components/app/connected-sites-list/index.scss b/ui/components/app/connected-sites-list/index.scss
similarity index 100%
rename from ui/app/components/app/connected-sites-list/index.scss
rename to ui/components/app/connected-sites-list/index.scss
diff --git a/ui/app/components/app/connected-status-indicator/connected-status-indicator.js b/ui/components/app/connected-status-indicator/connected-status-indicator.js
similarity index 100%
rename from ui/app/components/app/connected-status-indicator/connected-status-indicator.js
rename to ui/components/app/connected-status-indicator/connected-status-indicator.js
diff --git a/ui/app/components/app/connected-status-indicator/index.js b/ui/components/app/connected-status-indicator/index.js
similarity index 100%
rename from ui/app/components/app/connected-status-indicator/index.js
rename to ui/components/app/connected-status-indicator/index.js
diff --git a/ui/app/components/app/connected-status-indicator/index.scss b/ui/components/app/connected-status-indicator/index.scss
similarity index 100%
rename from ui/app/components/app/connected-status-indicator/index.scss
rename to ui/components/app/connected-status-indicator/index.scss
diff --git a/ui/app/components/app/contact-list/contact-list.component.js b/ui/components/app/contact-list/contact-list.component.js
similarity index 100%
rename from ui/app/components/app/contact-list/contact-list.component.js
rename to ui/components/app/contact-list/contact-list.component.js
diff --git a/ui/app/components/app/contact-list/index.js b/ui/components/app/contact-list/index.js
similarity index 100%
rename from ui/app/components/app/contact-list/index.js
rename to ui/components/app/contact-list/index.js
diff --git a/ui/app/components/app/contact-list/recipient-group/index.js b/ui/components/app/contact-list/recipient-group/index.js
similarity index 100%
rename from ui/app/components/app/contact-list/recipient-group/index.js
rename to ui/components/app/contact-list/recipient-group/index.js
diff --git a/ui/app/components/app/contact-list/recipient-group/recipient-group.component.js b/ui/components/app/contact-list/recipient-group/recipient-group.component.js
similarity index 100%
rename from ui/app/components/app/contact-list/recipient-group/recipient-group.component.js
rename to ui/components/app/contact-list/recipient-group/recipient-group.component.js
diff --git a/ui/app/components/app/dropdowns/dropdown.js b/ui/components/app/dropdowns/dropdown.js
similarity index 100%
rename from ui/app/components/app/dropdowns/dropdown.js
rename to ui/components/app/dropdowns/dropdown.js
diff --git a/ui/app/components/app/dropdowns/dropdown.test.js b/ui/components/app/dropdowns/dropdown.test.js
similarity index 100%
rename from ui/app/components/app/dropdowns/dropdown.test.js
rename to ui/components/app/dropdowns/dropdown.test.js
diff --git a/ui/app/components/app/dropdowns/network-dropdown.js b/ui/components/app/dropdowns/network-dropdown.js
similarity index 96%
rename from ui/app/components/app/dropdowns/network-dropdown.js
rename to ui/components/app/dropdowns/network-dropdown.js
index e0742722d..66e44bd49 100644
--- a/ui/app/components/app/dropdowns/network-dropdown.js
+++ b/ui/components/app/dropdowns/network-dropdown.js
@@ -9,10 +9,10 @@ import {
NETWORKS_ROUTE,
NETWORKS_FORM_ROUTE,
} from '../../../helpers/constants/routes';
-import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../shared/constants/app';
-import { NETWORK_TYPE_RPC } from '../../../../../shared/constants/network';
-import { isPrefixedFormattedHexString } from '../../../../../shared/modules/network.utils';
-import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../shared/constants/app';
+import { NETWORK_TYPE_RPC } from '../../../../shared/constants/network';
+import { isPrefixedFormattedHexString } from '../../../../shared/modules/network.utils';
+import { getEnvironmentType } from '../../../../app/scripts/lib/util';
import ColorIndicator from '../../ui/color-indicator';
import { COLORS, SIZES } from '../../../helpers/constants/design-system';
diff --git a/ui/app/components/app/dropdowns/network-dropdown.test.js b/ui/components/app/dropdowns/network-dropdown.test.js
similarity index 98%
rename from ui/app/components/app/dropdowns/network-dropdown.test.js
rename to ui/components/app/dropdowns/network-dropdown.test.js
index 3452e8fef..f68fddd93 100644
--- a/ui/app/components/app/dropdowns/network-dropdown.test.js
+++ b/ui/components/app/dropdowns/network-dropdown.test.js
@@ -1,7 +1,7 @@
import React from 'react';
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
-import { mountWithRouter } from '../../../../../test/lib/render-helpers';
+import { mountWithRouter } from '../../../../test/lib/render-helpers';
import ColorIndicator from '../../ui/color-indicator';
import NetworkDropdown from './network-dropdown';
import { DropdownMenuItem } from './dropdown';
diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-input-component.test.js b/ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-input-component.test.js
similarity index 100%
rename from ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-input-component.test.js
rename to ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-input-component.test.js
diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.component.js b/ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.component.js
similarity index 100%
rename from ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.component.js
rename to ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.component.js
diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.container.js b/ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.container.js
similarity index 100%
rename from ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.container.js
rename to ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.container.js
diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/index.js b/ui/components/app/gas-customization/advanced-gas-inputs/index.js
similarity index 100%
rename from ui/app/components/app/gas-customization/advanced-gas-inputs/index.js
rename to ui/components/app/gas-customization/advanced-gas-inputs/index.js
diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/index.scss b/ui/components/app/gas-customization/advanced-gas-inputs/index.scss
similarity index 100%
rename from ui/app/components/app/gas-customization/advanced-gas-inputs/index.scss
rename to ui/components/app/gas-customization/advanced-gas-inputs/index.scss
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js
similarity index 94%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js
rename to ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js
index 0a91fbc69..de8ec3b80 100644
--- a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js
+++ b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js
@@ -1,6 +1,6 @@
import React from 'react';
import sinon from 'sinon';
-import shallow from '../../../../../../lib/shallow-with-context';
+import { shallowWithContext } from '../../../../../../test/lib/render-helpers';
import AdvancedTabContent from './advanced-tab-content.component';
describe('AdvancedTabContent Component', () => {
@@ -13,7 +13,7 @@ describe('AdvancedTabContent Component', () => {
};
sinon.spy(AdvancedTabContent.prototype, 'renderDataSummary');
- wrapper = shallow(
+ wrapper = shallowWithContext(
{
let dataSummary;
beforeEach(() => {
- dataSummary = shallow(
+ dataSummary = shallowWithContext(
wrapper.instance().renderDataSummary('mockTotalFee'),
);
});
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js
rename to ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.js b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.js
rename to ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.js
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.scss b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.scss
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.scss
rename to ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.scss
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js
similarity index 96%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js
rename to ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js
index facda50a5..12114edcf 100644
--- a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js
+++ b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js
@@ -1,8 +1,8 @@
import React from 'react';
-import shallow from '../../../../../../lib/shallow-with-context';
import GasPriceButtonGroup from '../../gas-price-button-group';
import Loading from '../../../../ui/loading-screen';
import { GAS_ESTIMATE_TYPES } from '../../../../../helpers/constants/common';
+import { shallowWithContext } from '../../../../../../test/lib/render-helpers';
import BasicTabContent from './basic-tab-content.component';
const mockGasPriceButtonGroupProps = {
@@ -42,7 +42,7 @@ describe('BasicTabContent Component', () => {
let wrapper;
beforeEach(() => {
- wrapper = shallow(
+ wrapper = shallowWithContext(
,
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content.component.js b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content.component.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content.component.js
rename to ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content.component.js
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.js b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.js
rename to ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.js
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.scss b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.scss
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.scss
rename to ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.scss
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js
similarity index 95%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js
rename to ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js
index dd5f23e39..2094d4b54 100644
--- a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js
+++ b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js
@@ -1,6 +1,6 @@
import React from 'react';
import sinon from 'sinon';
-import shallow from '../../../../../lib/shallow-with-context';
+import { shallowWithContext } from '../../../../../test/lib/render-helpers';
import PageContainer from '../../../ui/page-container';
@@ -63,7 +63,7 @@ describe('GasModalPageContainer Component', () => {
let wrapper;
beforeEach(() => {
- wrapper = shallow(
+ wrapper = shallowWithContext(
{
it('should pass the correct renderTabs property to PageContainer', () => {
sinon.stub(GP, 'renderTabs').returns('mockTabs');
- const renderTabsWrapperTester = shallow(
+ const renderTabsWrapperTester = shallowWithContext(
{
it('should render a Tabs component with "Basic" and "Advanced" tabs', () => {
const renderTabsResult = wrapper.instance().renderTabs();
- const renderedTabs = shallow(renderTabsResult);
+ const renderedTabs = shallowWithContext(renderTabsResult);
expect(renderedTabs.props().className).toStrictEqual('tabs');
const tabs = renderedTabs.find(Tab);
@@ -189,7 +189,7 @@ describe('GasModalPageContainer Component', () => {
});
it('should not render the basic tab if hideBasic is true', () => {
- wrapper = shallow(
+ wrapper = shallowWithContext(
{
);
const renderTabsResult = wrapper.instance().renderTabs();
- const renderedTabs = shallow(renderTabsResult);
+ const renderedTabs = shallowWithContext(renderTabsResult);
const tabs = renderedTabs.find(Tab);
expect(tabs).toHaveLength(1);
expect(tabs.at(0).props().name).toStrictEqual('advanced');
@@ -229,7 +229,7 @@ describe('GasModalPageContainer Component', () => {
describe('renderInfoRows', () => {
it('should render the info rows with the passed data', () => {
const baseClassName = 'gas-modal-content__info-row';
- const renderedInfoRowsContainer = shallow(
+ const renderedInfoRowsContainer = shallowWithContext(
wrapper
.instance()
.renderInfoRows(
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js
similarity index 97%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js
rename to ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js
index ef5e62895..bcbbaa9d1 100644
--- a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js
+++ b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js
@@ -21,7 +21,7 @@ jest.mock('react-redux', () => ({
},
}));
-jest.mock('../../../../../app/selectors', () => ({
+jest.mock('../../../../selectors', () => ({
getBasicGasEstimateLoadingStatus: (s) =>
`mockBasicGasEstimateLoadingStatus:${Object.keys(s).length}`,
getRenderableBasicEstimateData: (s) =>
@@ -42,20 +42,20 @@ jest.mock('../../../../../app/selectors', () => ({
isCustomPriceSafe: jest.fn().mockReturnValue(true),
}));
-jest.mock('../../../../../app/store/actions', () => ({
+jest.mock('../../../../store/actions', () => ({
hideModal: jest.fn(),
setGasLimit: jest.fn(),
setGasPrice: jest.fn(),
updateTransaction: jest.fn(),
}));
-jest.mock('../../../../../app/ducks/gas/gas.duck', () => ({
+jest.mock('../../../../ducks/gas/gas.duck', () => ({
setCustomGasPrice: jest.fn(),
setCustomGasLimit: jest.fn(),
resetCustomData: jest.fn(),
}));
-jest.mock('../../../../../app/ducks/send/send.duck', () => ({
+jest.mock('../../../../ducks/send/send.duck', () => ({
hideGasButtonGroup: jest.fn(),
}));
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js
rename to ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
similarity index 98%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
rename to ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
index 4d57502b2..d85d07c72 100644
--- a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
+++ b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
@@ -1,5 +1,5 @@
import { connect } from 'react-redux';
-import { addHexPrefix } from '../../../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../../../app/scripts/lib/util';
import {
hideModal,
setGasLimit,
@@ -54,7 +54,7 @@ import {
} from '../../../../pages/send/send.utils';
import { MIN_GAS_LIMIT_DEC } from '../../../../pages/send/send.constants';
import { calcMaxAmount } from '../../../../pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils';
-import { TRANSACTION_STATUSES } from '../../../../../../shared/constants/transaction';
+import { TRANSACTION_STATUSES } from '../../../../../shared/constants/transaction';
import GasModalPageContainer from './gas-modal-page-container.component';
const mapStateToProps = (state, ownProps) => {
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/index.js b/ui/components/app/gas-customization/gas-modal-page-container/index.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/index.js
rename to ui/components/app/gas-customization/gas-modal-page-container/index.js
diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/index.scss b/ui/components/app/gas-customization/gas-modal-page-container/index.scss
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-modal-page-container/index.scss
rename to ui/components/app/gas-customization/gas-modal-page-container/index.scss
diff --git a/ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js b/ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js
similarity index 93%
rename from ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js
rename to ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js
index 2cb5cb428..2391c23a6 100644
--- a/ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js
+++ b/ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js
@@ -1,6 +1,6 @@
import React from 'react';
import sinon from 'sinon';
-import shallow from '../../../../../lib/shallow-with-context';
+import { shallowWithContext } from '../../../../../test/lib/render-helpers';
import { GAS_ESTIMATE_TYPES } from '../../../../helpers/constants/common';
import ButtonGroup from '../../../ui/button-group';
@@ -54,7 +54,7 @@ describe('GasPriceButtonGroup Component', () => {
sinon.spy(GasPriceButtonGroup.prototype, 'renderButton');
sinon.spy(GasPriceButtonGroup.prototype, 'renderButtonContent');
- wrapper = shallow(
+ wrapper = shallowWithContext(
,
);
});
@@ -119,7 +119,7 @@ describe('GasPriceButtonGroup Component', () => {
{ ...mockGasPriceButtonGroupProps.gasButtonInfo[0] },
mockButtonPropsAndFlags,
);
- wrappedRenderButtonResult = shallow(renderButtonResult);
+ wrappedRenderButtonResult = shallowWithContext(renderButtonResult);
});
it('should render a button', () => {
@@ -183,7 +183,7 @@ describe('GasPriceButtonGroup Component', () => {
className: 'someClass',
},
);
- const wrappedRenderButtonContentResult = shallow(
+ const wrappedRenderButtonContentResult = shallowWithContext(
renderButtonContentResult,
);
expect(
@@ -203,7 +203,7 @@ describe('GasPriceButtonGroup Component', () => {
className: 'someClass',
},
);
- const wrappedRenderButtonContentResult = shallow(
+ const wrappedRenderButtonContentResult = shallowWithContext(
renderButtonContentResult,
);
expect(
@@ -225,7 +225,7 @@ describe('GasPriceButtonGroup Component', () => {
className: 'someClass',
},
);
- const wrappedRenderButtonContentResult = shallow(
+ const wrappedRenderButtonContentResult = shallowWithContext(
renderButtonContentResult,
);
expect(
@@ -247,7 +247,7 @@ describe('GasPriceButtonGroup Component', () => {
className: 'someClass',
},
);
- const wrappedRenderButtonContentResult = shallow(
+ const wrappedRenderButtonContentResult = shallowWithContext(
renderButtonContentResult,
);
expect(
@@ -268,7 +268,7 @@ describe('GasPriceButtonGroup Component', () => {
showCheck: true,
},
);
- const wrappedRenderButtonContentResult = shallow(
+ const wrappedRenderButtonContentResult = shallowWithContext(
renderButtonContentResult,
);
expect(wrappedRenderButtonContentResult.find('.fa-check')).toHaveLength(
@@ -289,7 +289,7 @@ describe('GasPriceButtonGroup Component', () => {
showCheck: true,
},
);
- const wrappedRenderButtonContentResult = shallow(
+ const wrappedRenderButtonContentResult = shallowWithContext(
renderButtonContentResult,
);
expect(wrappedRenderButtonContentResult.children()).toHaveLength(5);
@@ -300,7 +300,7 @@ describe('GasPriceButtonGroup Component', () => {
{},
{},
);
- const wrappedRenderButtonContentResult = shallow(
+ const wrappedRenderButtonContentResult = shallowWithContext(
renderButtonContentResult,
);
expect(wrappedRenderButtonContentResult.children()).toHaveLength(0);
diff --git a/ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group.component.js b/ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group.component.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group.component.js
rename to ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group.component.js
diff --git a/ui/app/components/app/gas-customization/gas-price-button-group/index.js b/ui/components/app/gas-customization/gas-price-button-group/index.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-price-button-group/index.js
rename to ui/components/app/gas-customization/gas-price-button-group/index.js
diff --git a/ui/app/components/app/gas-customization/gas-price-button-group/index.scss b/ui/components/app/gas-customization/gas-price-button-group/index.scss
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-price-button-group/index.scss
rename to ui/components/app/gas-customization/gas-price-button-group/index.scss
diff --git a/ui/app/components/app/gas-customization/gas-slider/gas-slider.component.js b/ui/components/app/gas-customization/gas-slider/gas-slider.component.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-slider/gas-slider.component.js
rename to ui/components/app/gas-customization/gas-slider/gas-slider.component.js
diff --git a/ui/app/components/app/gas-customization/gas-slider/index.js b/ui/components/app/gas-customization/gas-slider/index.js
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-slider/index.js
rename to ui/components/app/gas-customization/gas-slider/index.js
diff --git a/ui/app/components/app/gas-customization/gas-slider/index.scss b/ui/components/app/gas-customization/gas-slider/index.scss
similarity index 100%
rename from ui/app/components/app/gas-customization/gas-slider/index.scss
rename to ui/components/app/gas-customization/gas-slider/index.scss
diff --git a/ui/app/components/app/gas-customization/index.scss b/ui/components/app/gas-customization/index.scss
similarity index 100%
rename from ui/app/components/app/gas-customization/index.scss
rename to ui/components/app/gas-customization/index.scss
diff --git a/ui/app/components/app/home-notification/home-notification.component.js b/ui/components/app/home-notification/home-notification.component.js
similarity index 100%
rename from ui/app/components/app/home-notification/home-notification.component.js
rename to ui/components/app/home-notification/home-notification.component.js
diff --git a/ui/app/components/app/home-notification/index.js b/ui/components/app/home-notification/index.js
similarity index 100%
rename from ui/app/components/app/home-notification/index.js
rename to ui/components/app/home-notification/index.js
diff --git a/ui/app/components/app/home-notification/index.scss b/ui/components/app/home-notification/index.scss
similarity index 100%
rename from ui/app/components/app/home-notification/index.scss
rename to ui/components/app/home-notification/index.scss
diff --git a/ui/app/components/app/info-box/index.js b/ui/components/app/info-box/index.js
similarity index 100%
rename from ui/app/components/app/info-box/index.js
rename to ui/components/app/info-box/index.js
diff --git a/ui/app/components/app/info-box/index.scss b/ui/components/app/info-box/index.scss
similarity index 100%
rename from ui/app/components/app/info-box/index.scss
rename to ui/components/app/info-box/index.scss
diff --git a/ui/app/components/app/info-box/info-box.component.js b/ui/components/app/info-box/info-box.component.js
similarity index 100%
rename from ui/app/components/app/info-box/info-box.component.js
rename to ui/components/app/info-box/info-box.component.js
diff --git a/ui/app/components/app/info-box/info-box.test.js b/ui/components/app/info-box/info-box.test.js
similarity index 100%
rename from ui/app/components/app/info-box/info-box.test.js
rename to ui/components/app/info-box/info-box.test.js
diff --git a/ui/app/components/app/loading-network-screen/index.js b/ui/components/app/loading-network-screen/index.js
similarity index 100%
rename from ui/app/components/app/loading-network-screen/index.js
rename to ui/components/app/loading-network-screen/index.js
diff --git a/ui/app/components/app/loading-network-screen/loading-network-screen.component.js b/ui/components/app/loading-network-screen/loading-network-screen.component.js
similarity index 100%
rename from ui/app/components/app/loading-network-screen/loading-network-screen.component.js
rename to ui/components/app/loading-network-screen/loading-network-screen.component.js
diff --git a/ui/app/components/app/loading-network-screen/loading-network-screen.container.js b/ui/components/app/loading-network-screen/loading-network-screen.container.js
similarity index 93%
rename from ui/app/components/app/loading-network-screen/loading-network-screen.container.js
rename to ui/components/app/loading-network-screen/loading-network-screen.container.js
index bfce78fbe..2f1e711ce 100644
--- a/ui/app/components/app/loading-network-screen/loading-network-screen.container.js
+++ b/ui/components/app/loading-network-screen/loading-network-screen.container.js
@@ -1,5 +1,5 @@
import { connect } from 'react-redux';
-import { NETWORK_TYPE_RPC } from '../../../../../shared/constants/network';
+import { NETWORK_TYPE_RPC } from '../../../../shared/constants/network';
import * as actions from '../../../store/actions';
import { getNetworkIdentifier, isNetworkLoading } from '../../../selectors';
import LoadingNetworkScreen from './loading-network-screen.component';
diff --git a/ui/app/components/app/menu-bar/account-options-menu.js b/ui/components/app/menu-bar/account-options-menu.js
similarity index 95%
rename from ui/app/components/app/menu-bar/account-options-menu.js
rename to ui/components/app/menu-bar/account-options-menu.js
index b8ea6d1d4..f71908aae 100644
--- a/ui/app/components/app/menu-bar/account-options-menu.js
+++ b/ui/components/app/menu-bar/account-options-menu.js
@@ -6,7 +6,7 @@ import { useDispatch, useSelector } from 'react-redux';
import { showModal } from '../../../store/actions';
import { CONNECTED_ROUTE } from '../../../helpers/constants/routes';
import { Menu, MenuItem } from '../../ui/menu';
-import getAccountLink from '../../../../lib/account-link';
+import getAccountLink from '../../../helpers/utils/account-link';
import {
getCurrentChainId,
getCurrentKeyring,
@@ -15,8 +15,8 @@ import {
} from '../../../selectors';
import { useI18nContext } from '../../../hooks/useI18nContext';
import { useMetricEvent } from '../../../hooks/useMetricEvent';
-import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
-import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../shared/constants/app';
export default function AccountOptionsMenu({ anchorElement, onClose }) {
const t = useI18nContext();
diff --git a/ui/app/components/app/menu-bar/index.js b/ui/components/app/menu-bar/index.js
similarity index 100%
rename from ui/app/components/app/menu-bar/index.js
rename to ui/components/app/menu-bar/index.js
diff --git a/ui/app/components/app/menu-bar/index.scss b/ui/components/app/menu-bar/index.scss
similarity index 100%
rename from ui/app/components/app/menu-bar/index.scss
rename to ui/components/app/menu-bar/index.scss
diff --git a/ui/app/components/app/menu-bar/menu-bar.js b/ui/components/app/menu-bar/menu-bar.js
similarity index 92%
rename from ui/app/components/app/menu-bar/menu-bar.js
rename to ui/components/app/menu-bar/menu-bar.js
index 7b623c2c6..b5e3fdb7c 100644
--- a/ui/app/components/app/menu-bar/menu-bar.js
+++ b/ui/components/app/menu-bar/menu-bar.js
@@ -4,8 +4,8 @@ import { useHistory } from 'react-router-dom';
import { useSelector } from 'react-redux';
import SelectedAccount from '../selected-account';
import ConnectedStatusIndicator from '../connected-status-indicator';
-import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
-import { ENVIRONMENT_TYPE_POPUP } from '../../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app';
import { CONNECTED_ACCOUNTS_ROUTE } from '../../../helpers/constants/routes';
import { useI18nContext } from '../../../hooks/useI18nContext';
import { useMetricEvent } from '../../../hooks/useMetricEvent';
diff --git a/ui/app/components/app/menu-bar/menu-bar.test.js b/ui/components/app/menu-bar/menu-bar.test.js
similarity index 92%
rename from ui/app/components/app/menu-bar/menu-bar.test.js
rename to ui/components/app/menu-bar/menu-bar.test.js
index 5db320352..4a625f717 100644
--- a/ui/app/components/app/menu-bar/menu-bar.test.js
+++ b/ui/components/app/menu-bar/menu-bar.test.js
@@ -1,8 +1,8 @@
import React from 'react';
import { Provider } from 'react-redux';
import configureStore from 'redux-mock-store';
-import { mountWithRouter } from '../../../../../test/lib/render-helpers';
-import { ROPSTEN_CHAIN_ID } from '../../../../../shared/constants/network';
+import { mountWithRouter } from '../../../../test/lib/render-helpers';
+import { ROPSTEN_CHAIN_ID } from '../../../../shared/constants/network';
import MenuBar from './menu-bar';
const initState = {
diff --git a/ui/app/components/app/menu-droppo.js b/ui/components/app/menu-droppo.js
similarity index 100%
rename from ui/app/components/app/menu-droppo.js
rename to ui/components/app/menu-droppo.js
diff --git a/ui/app/components/app/metamask-template-renderer/index.js b/ui/components/app/metamask-template-renderer/index.js
similarity index 100%
rename from ui/app/components/app/metamask-template-renderer/index.js
rename to ui/components/app/metamask-template-renderer/index.js
diff --git a/ui/app/components/app/metamask-template-renderer/metamask-template-renderer.js b/ui/components/app/metamask-template-renderer/metamask-template-renderer.js
similarity index 100%
rename from ui/app/components/app/metamask-template-renderer/metamask-template-renderer.js
rename to ui/components/app/metamask-template-renderer/metamask-template-renderer.js
diff --git a/ui/app/components/app/metamask-template-renderer/metamask-template-renderer.stories.js b/ui/components/app/metamask-template-renderer/metamask-template-renderer.stories.js
similarity index 100%
rename from ui/app/components/app/metamask-template-renderer/metamask-template-renderer.stories.js
rename to ui/components/app/metamask-template-renderer/metamask-template-renderer.stories.js
diff --git a/ui/app/components/app/metamask-template-renderer/safe-component-list.js b/ui/components/app/metamask-template-renderer/safe-component-list.js
similarity index 100%
rename from ui/app/components/app/metamask-template-renderer/safe-component-list.js
rename to ui/components/app/metamask-template-renderer/safe-component-list.js
diff --git a/ui/app/components/app/metamask-translation/index.js b/ui/components/app/metamask-translation/index.js
similarity index 100%
rename from ui/app/components/app/metamask-translation/index.js
rename to ui/components/app/metamask-translation/index.js
diff --git a/ui/app/components/app/metamask-translation/metamask-translation.js b/ui/components/app/metamask-translation/metamask-translation.js
similarity index 100%
rename from ui/app/components/app/metamask-translation/metamask-translation.js
rename to ui/components/app/metamask-translation/metamask-translation.js
diff --git a/ui/app/components/app/metamask-translation/metamask-translation.stories.js b/ui/components/app/metamask-translation/metamask-translation.stories.js
similarity index 95%
rename from ui/app/components/app/metamask-translation/metamask-translation.stories.js
rename to ui/components/app/metamask-translation/metamask-translation.stories.js
index 21d321ccc..429037810 100644
--- a/ui/app/components/app/metamask-translation/metamask-translation.stories.js
+++ b/ui/components/app/metamask-translation/metamask-translation.stories.js
@@ -1,7 +1,7 @@
import React from 'react';
import { select, object } from '@storybook/addon-knobs';
import { groupBy } from 'lodash';
-import en from '../../../../../app/_locales/en/messages.json';
+import en from '../../../../app/_locales/en/messages.json';
import MetaMaskTranslation from './metamask-translation';
export default {
diff --git a/ui/app/components/app/modal/index.js b/ui/components/app/modal/index.js
similarity index 100%
rename from ui/app/components/app/modal/index.js
rename to ui/components/app/modal/index.js
diff --git a/ui/app/components/app/modal/index.scss b/ui/components/app/modal/index.scss
similarity index 100%
rename from ui/app/components/app/modal/index.scss
rename to ui/components/app/modal/index.scss
diff --git a/ui/app/components/app/modal/modal-content/index.js b/ui/components/app/modal/modal-content/index.js
similarity index 100%
rename from ui/app/components/app/modal/modal-content/index.js
rename to ui/components/app/modal/modal-content/index.js
diff --git a/ui/app/components/app/modal/modal-content/index.scss b/ui/components/app/modal/modal-content/index.scss
similarity index 100%
rename from ui/app/components/app/modal/modal-content/index.scss
rename to ui/components/app/modal/modal-content/index.scss
diff --git a/ui/app/components/app/modal/modal-content/modal-content.component.js b/ui/components/app/modal/modal-content/modal-content.component.js
similarity index 100%
rename from ui/app/components/app/modal/modal-content/modal-content.component.js
rename to ui/components/app/modal/modal-content/modal-content.component.js
diff --git a/ui/app/components/app/modal/modal-content/modal-content.component.test.js b/ui/components/app/modal/modal-content/modal-content.component.test.js
similarity index 100%
rename from ui/app/components/app/modal/modal-content/modal-content.component.test.js
rename to ui/components/app/modal/modal-content/modal-content.component.test.js
diff --git a/ui/app/components/app/modal/modal.component.js b/ui/components/app/modal/modal.component.js
similarity index 100%
rename from ui/app/components/app/modal/modal.component.js
rename to ui/components/app/modal/modal.component.js
diff --git a/ui/app/components/app/modal/modal.component.test.js b/ui/components/app/modal/modal.component.test.js
similarity index 100%
rename from ui/app/components/app/modal/modal.component.test.js
rename to ui/components/app/modal/modal.component.test.js
diff --git a/ui/app/components/app/modals/account-details-modal/account-details-modal.component.js b/ui/components/app/modals/account-details-modal/account-details-modal.component.js
similarity index 97%
rename from ui/app/components/app/modals/account-details-modal/account-details-modal.component.js
rename to ui/components/app/modals/account-details-modal/account-details-modal.component.js
index 7e36e0a6c..c314d6979 100644
--- a/ui/app/components/app/modals/account-details-modal/account-details-modal.component.js
+++ b/ui/components/app/modals/account-details-modal/account-details-modal.component.js
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import AccountModalContainer from '../account-modal-container';
-import getAccountLink from '../../../../../lib/account-link';
+import getAccountLink from '../../../../helpers/utils/account-link';
import QrView from '../../../ui/qr-code';
import EditableLabel from '../../../ui/editable-label';
import Button from '../../../ui/button';
diff --git a/ui/app/components/app/modals/account-details-modal/account-details-modal.container.js b/ui/components/app/modals/account-details-modal/account-details-modal.container.js
similarity index 100%
rename from ui/app/components/app/modals/account-details-modal/account-details-modal.container.js
rename to ui/components/app/modals/account-details-modal/account-details-modal.container.js
diff --git a/ui/app/components/app/modals/account-details-modal/account-details-modal.test.js b/ui/components/app/modals/account-details-modal/account-details-modal.test.js
similarity index 100%
rename from ui/app/components/app/modals/account-details-modal/account-details-modal.test.js
rename to ui/components/app/modals/account-details-modal/account-details-modal.test.js
diff --git a/ui/app/components/app/modals/account-details-modal/index.js b/ui/components/app/modals/account-details-modal/index.js
similarity index 100%
rename from ui/app/components/app/modals/account-details-modal/index.js
rename to ui/components/app/modals/account-details-modal/index.js
diff --git a/ui/app/components/app/modals/account-details-modal/index.scss b/ui/components/app/modals/account-details-modal/index.scss
similarity index 100%
rename from ui/app/components/app/modals/account-details-modal/index.scss
rename to ui/components/app/modals/account-details-modal/index.scss
diff --git a/ui/app/components/app/modals/account-modal-container/account-modal-container.component.js b/ui/components/app/modals/account-modal-container/account-modal-container.component.js
similarity index 100%
rename from ui/app/components/app/modals/account-modal-container/account-modal-container.component.js
rename to ui/components/app/modals/account-modal-container/account-modal-container.component.js
diff --git a/ui/app/components/app/modals/account-modal-container/account-modal-container.container.js b/ui/components/app/modals/account-modal-container/account-modal-container.container.js
similarity index 100%
rename from ui/app/components/app/modals/account-modal-container/account-modal-container.container.js
rename to ui/components/app/modals/account-modal-container/account-modal-container.container.js
diff --git a/ui/app/components/app/modals/account-modal-container/index.js b/ui/components/app/modals/account-modal-container/index.js
similarity index 100%
rename from ui/app/components/app/modals/account-modal-container/index.js
rename to ui/components/app/modals/account-modal-container/index.js
diff --git a/ui/app/components/app/modals/account-modal-container/index.scss b/ui/components/app/modals/account-modal-container/index.scss
similarity index 100%
rename from ui/app/components/app/modals/account-modal-container/index.scss
rename to ui/components/app/modals/account-modal-container/index.scss
diff --git a/ui/app/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.component.js b/ui/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.component.js
similarity index 100%
rename from ui/app/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.component.js
rename to ui/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.component.js
diff --git a/ui/app/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.container.js b/ui/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.container.js
similarity index 100%
rename from ui/app/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.container.js
rename to ui/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.container.js
diff --git a/ui/app/components/app/modals/add-to-addressbook-modal/index.js b/ui/components/app/modals/add-to-addressbook-modal/index.js
similarity index 100%
rename from ui/app/components/app/modals/add-to-addressbook-modal/index.js
rename to ui/components/app/modals/add-to-addressbook-modal/index.js
diff --git a/ui/app/components/app/modals/add-to-addressbook-modal/index.scss b/ui/components/app/modals/add-to-addressbook-modal/index.scss
similarity index 100%
rename from ui/app/components/app/modals/add-to-addressbook-modal/index.scss
rename to ui/components/app/modals/add-to-addressbook-modal/index.scss
diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.js b/ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.js
similarity index 100%
rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.js
rename to ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.js
diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.test.js b/ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.test.js
similarity index 100%
rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.test.js
rename to ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.test.js
diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.js b/ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.js
similarity index 100%
rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.js
rename to ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.js
diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.scss b/ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.scss
similarity index 100%
rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.scss
rename to ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.scss
diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.js b/ui/components/app/modals/cancel-transaction/cancel-transaction.component.js
similarity index 95%
rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.js
rename to ui/components/app/modals/cancel-transaction/cancel-transaction.component.js
index d45ba6198..9b436f7d9 100644
--- a/ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.js
+++ b/ui/components/app/modals/cancel-transaction/cancel-transaction.component.js
@@ -1,7 +1,7 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import Modal from '../../modal';
-import { TRANSACTION_STATUSES } from '../../../../../../shared/constants/transaction';
+import { TRANSACTION_STATUSES } from '../../../../../shared/constants/transaction';
import CancelTransactionGasFee from './cancel-transaction-gas-fee';
export default class CancelTransaction extends PureComponent {
diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.test.js b/ui/components/app/modals/cancel-transaction/cancel-transaction.component.test.js
similarity index 100%
rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.test.js
rename to ui/components/app/modals/cancel-transaction/cancel-transaction.component.test.js
diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction.container.js b/ui/components/app/modals/cancel-transaction/cancel-transaction.container.js
similarity index 100%
rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction.container.js
rename to ui/components/app/modals/cancel-transaction/cancel-transaction.container.js
diff --git a/ui/app/components/app/modals/cancel-transaction/index.js b/ui/components/app/modals/cancel-transaction/index.js
similarity index 100%
rename from ui/app/components/app/modals/cancel-transaction/index.js
rename to ui/components/app/modals/cancel-transaction/index.js
diff --git a/ui/app/components/app/modals/cancel-transaction/index.scss b/ui/components/app/modals/cancel-transaction/index.scss
similarity index 100%
rename from ui/app/components/app/modals/cancel-transaction/index.scss
rename to ui/components/app/modals/cancel-transaction/index.scss
diff --git a/ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.component.js b/ui/components/app/modals/confirm-delete-network/confirm-delete-network.component.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.component.js
rename to ui/components/app/modals/confirm-delete-network/confirm-delete-network.component.js
diff --git a/ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.container.js b/ui/components/app/modals/confirm-delete-network/confirm-delete-network.container.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.container.js
rename to ui/components/app/modals/confirm-delete-network/confirm-delete-network.container.js
diff --git a/ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.test.js b/ui/components/app/modals/confirm-delete-network/confirm-delete-network.test.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.test.js
rename to ui/components/app/modals/confirm-delete-network/confirm-delete-network.test.js
diff --git a/ui/app/components/app/modals/confirm-delete-network/index.js b/ui/components/app/modals/confirm-delete-network/index.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-delete-network/index.js
rename to ui/components/app/modals/confirm-delete-network/index.js
diff --git a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js b/ui/components/app/modals/confirm-remove-account/confirm-remove-account.component.js
similarity index 97%
rename from ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js
rename to ui/components/app/modals/confirm-remove-account/confirm-remove-account.component.js
index 8c2831c2c..decdc329f 100644
--- a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js
+++ b/ui/components/app/modals/confirm-remove-account/confirm-remove-account.component.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import Modal from '../../modal';
import { addressSummary } from '../../../../helpers/utils/util';
import Identicon from '../../../ui/identicon';
-import getAccountLink from '../../../../../lib/account-link';
+import getAccountLink from '../../../../helpers/utils/account-link';
export default class ConfirmRemoveAccount extends Component {
static propTypes = {
diff --git a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.container.js b/ui/components/app/modals/confirm-remove-account/confirm-remove-account.container.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.container.js
rename to ui/components/app/modals/confirm-remove-account/confirm-remove-account.container.js
diff --git a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.test.js b/ui/components/app/modals/confirm-remove-account/confirm-remove-account.test.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.test.js
rename to ui/components/app/modals/confirm-remove-account/confirm-remove-account.test.js
diff --git a/ui/app/components/app/modals/confirm-remove-account/index.js b/ui/components/app/modals/confirm-remove-account/index.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-remove-account/index.js
rename to ui/components/app/modals/confirm-remove-account/index.js
diff --git a/ui/app/components/app/modals/confirm-remove-account/index.scss b/ui/components/app/modals/confirm-remove-account/index.scss
similarity index 100%
rename from ui/app/components/app/modals/confirm-remove-account/index.scss
rename to ui/components/app/modals/confirm-remove-account/index.scss
diff --git a/ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.component.js b/ui/components/app/modals/confirm-reset-account/confirm-reset-account.component.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.component.js
rename to ui/components/app/modals/confirm-reset-account/confirm-reset-account.component.js
diff --git a/ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.container.js b/ui/components/app/modals/confirm-reset-account/confirm-reset-account.container.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.container.js
rename to ui/components/app/modals/confirm-reset-account/confirm-reset-account.container.js
diff --git a/ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.test.js b/ui/components/app/modals/confirm-reset-account/confirm-reset-account.test.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.test.js
rename to ui/components/app/modals/confirm-reset-account/confirm-reset-account.test.js
diff --git a/ui/app/components/app/modals/confirm-reset-account/index.js b/ui/components/app/modals/confirm-reset-account/index.js
similarity index 100%
rename from ui/app/components/app/modals/confirm-reset-account/index.js
rename to ui/components/app/modals/confirm-reset-account/index.js
diff --git a/ui/app/components/app/modals/customize-nonce/customize-nonce.component.js b/ui/components/app/modals/customize-nonce/customize-nonce.component.js
similarity index 100%
rename from ui/app/components/app/modals/customize-nonce/customize-nonce.component.js
rename to ui/components/app/modals/customize-nonce/customize-nonce.component.js
diff --git a/ui/app/components/app/modals/customize-nonce/index.js b/ui/components/app/modals/customize-nonce/index.js
similarity index 100%
rename from ui/app/components/app/modals/customize-nonce/index.js
rename to ui/components/app/modals/customize-nonce/index.js
diff --git a/ui/app/components/app/modals/customize-nonce/index.scss b/ui/components/app/modals/customize-nonce/index.scss
similarity index 100%
rename from ui/app/components/app/modals/customize-nonce/index.scss
rename to ui/components/app/modals/customize-nonce/index.scss
diff --git a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js b/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js
similarity index 98%
rename from ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js
rename to ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js
index 553f25973..3f1775a47 100644
--- a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js
+++ b/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js
@@ -1,6 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
-import { NETWORK_TO_NAME_MAP } from '../../../../../../shared/constants/network';
+import { NETWORK_TO_NAME_MAP } from '../../../../../shared/constants/network';
import Button from '../../../ui/button';
export default class DepositEtherModal extends Component {
diff --git a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js b/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js
similarity index 100%
rename from ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js
rename to ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js
diff --git a/ui/app/components/app/modals/deposit-ether-modal/index.js b/ui/components/app/modals/deposit-ether-modal/index.js
similarity index 100%
rename from ui/app/components/app/modals/deposit-ether-modal/index.js
rename to ui/components/app/modals/deposit-ether-modal/index.js
diff --git a/ui/app/components/app/modals/deposit-ether-modal/index.scss b/ui/components/app/modals/deposit-ether-modal/index.scss
similarity index 100%
rename from ui/app/components/app/modals/deposit-ether-modal/index.scss
rename to ui/components/app/modals/deposit-ether-modal/index.scss
diff --git a/ui/app/components/app/modals/edit-approval-permission/edit-approval-permission.component.js b/ui/components/app/modals/edit-approval-permission/edit-approval-permission.component.js
similarity index 100%
rename from ui/app/components/app/modals/edit-approval-permission/edit-approval-permission.component.js
rename to ui/components/app/modals/edit-approval-permission/edit-approval-permission.component.js
diff --git a/ui/app/components/app/modals/edit-approval-permission/edit-approval-permission.container.js b/ui/components/app/modals/edit-approval-permission/edit-approval-permission.container.js
similarity index 100%
rename from ui/app/components/app/modals/edit-approval-permission/edit-approval-permission.container.js
rename to ui/components/app/modals/edit-approval-permission/edit-approval-permission.container.js
diff --git a/ui/app/components/app/modals/edit-approval-permission/index.js b/ui/components/app/modals/edit-approval-permission/index.js
similarity index 100%
rename from ui/app/components/app/modals/edit-approval-permission/index.js
rename to ui/components/app/modals/edit-approval-permission/index.js
diff --git a/ui/app/components/app/modals/edit-approval-permission/index.scss b/ui/components/app/modals/edit-approval-permission/index.scss
similarity index 100%
rename from ui/app/components/app/modals/edit-approval-permission/index.scss
rename to ui/components/app/modals/edit-approval-permission/index.scss
diff --git a/ui/app/components/app/modals/export-private-key-modal/export-private-key-modal.component.js b/ui/components/app/modals/export-private-key-modal/export-private-key-modal.component.js
similarity index 98%
rename from ui/app/components/app/modals/export-private-key-modal/export-private-key-modal.component.js
rename to ui/components/app/modals/export-private-key-modal/export-private-key-modal.component.js
index 4db92c4f5..ba6e4ca8b 100644
--- a/ui/app/components/app/modals/export-private-key-modal/export-private-key-modal.component.js
+++ b/ui/components/app/modals/export-private-key-modal/export-private-key-modal.component.js
@@ -7,7 +7,7 @@ import copyToClipboard from 'copy-to-clipboard';
import ReadOnlyInput from '../../../ui/readonly-input';
import Button from '../../../ui/button';
import AccountModalContainer from '../account-modal-container';
-import { toChecksumHexAddress } from '../../../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../../../shared/modules/hexstring-utils';
export default class ExportPrivateKeyModal extends Component {
static contextTypes = {
diff --git a/ui/app/components/app/modals/export-private-key-modal/export-private-key-modal.container.js b/ui/components/app/modals/export-private-key-modal/export-private-key-modal.container.js
similarity index 100%
rename from ui/app/components/app/modals/export-private-key-modal/export-private-key-modal.container.js
rename to ui/components/app/modals/export-private-key-modal/export-private-key-modal.container.js
diff --git a/ui/app/components/app/modals/export-private-key-modal/index.js b/ui/components/app/modals/export-private-key-modal/index.js
similarity index 100%
rename from ui/app/components/app/modals/export-private-key-modal/index.js
rename to ui/components/app/modals/export-private-key-modal/index.js
diff --git a/ui/app/components/app/modals/export-private-key-modal/index.scss b/ui/components/app/modals/export-private-key-modal/index.scss
similarity index 100%
rename from ui/app/components/app/modals/export-private-key-modal/index.scss
rename to ui/components/app/modals/export-private-key-modal/index.scss
diff --git a/ui/app/components/app/modals/fade-modal.js b/ui/components/app/modals/fade-modal.js
similarity index 100%
rename from ui/app/components/app/modals/fade-modal.js
rename to ui/components/app/modals/fade-modal.js
diff --git a/ui/app/components/app/modals/hide-token-confirmation-modal/hide-token-confirmation-modal.js b/ui/components/app/modals/hide-token-confirmation-modal/hide-token-confirmation-modal.js
similarity index 100%
rename from ui/app/components/app/modals/hide-token-confirmation-modal/hide-token-confirmation-modal.js
rename to ui/components/app/modals/hide-token-confirmation-modal/hide-token-confirmation-modal.js
diff --git a/ui/app/components/app/modals/hide-token-confirmation-modal/index.js b/ui/components/app/modals/hide-token-confirmation-modal/index.js
similarity index 100%
rename from ui/app/components/app/modals/hide-token-confirmation-modal/index.js
rename to ui/components/app/modals/hide-token-confirmation-modal/index.js
diff --git a/ui/app/components/app/modals/hide-token-confirmation-modal/index.scss b/ui/components/app/modals/hide-token-confirmation-modal/index.scss
similarity index 100%
rename from ui/app/components/app/modals/hide-token-confirmation-modal/index.scss
rename to ui/components/app/modals/hide-token-confirmation-modal/index.scss
diff --git a/ui/app/components/app/modals/index.js b/ui/components/app/modals/index.js
similarity index 100%
rename from ui/app/components/app/modals/index.js
rename to ui/components/app/modals/index.js
diff --git a/ui/app/components/app/modals/index.scss b/ui/components/app/modals/index.scss
similarity index 100%
rename from ui/app/components/app/modals/index.scss
rename to ui/components/app/modals/index.scss
diff --git a/ui/app/components/app/modals/loading-network-error/index.js b/ui/components/app/modals/loading-network-error/index.js
similarity index 100%
rename from ui/app/components/app/modals/loading-network-error/index.js
rename to ui/components/app/modals/loading-network-error/index.js
diff --git a/ui/app/components/app/modals/loading-network-error/loading-network-error.component.js b/ui/components/app/modals/loading-network-error/loading-network-error.component.js
similarity index 100%
rename from ui/app/components/app/modals/loading-network-error/loading-network-error.component.js
rename to ui/components/app/modals/loading-network-error/loading-network-error.component.js
diff --git a/ui/app/components/app/modals/loading-network-error/loading-network-error.container.js b/ui/components/app/modals/loading-network-error/loading-network-error.container.js
similarity index 100%
rename from ui/app/components/app/modals/loading-network-error/loading-network-error.container.js
rename to ui/components/app/modals/loading-network-error/loading-network-error.container.js
diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/index.js b/ui/components/app/modals/metametrics-opt-in-modal/index.js
similarity index 100%
rename from ui/app/components/app/modals/metametrics-opt-in-modal/index.js
rename to ui/components/app/modals/metametrics-opt-in-modal/index.js
diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/index.scss b/ui/components/app/modals/metametrics-opt-in-modal/index.scss
similarity index 100%
rename from ui/app/components/app/modals/metametrics-opt-in-modal/index.scss
rename to ui/components/app/modals/metametrics-opt-in-modal/index.scss
diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js
similarity index 100%
rename from ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js
rename to ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js
diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.container.js b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.container.js
similarity index 100%
rename from ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.container.js
rename to ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.container.js
diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js
similarity index 95%
rename from ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js
rename to ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js
index fc45751b5..7b90b24ff 100644
--- a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js
+++ b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js
@@ -1,7 +1,7 @@
import React from 'react';
import sinon from 'sinon';
import { mount } from 'enzyme';
-import messages from '../../../../../../app/_locales/en/messages.json';
+import messages from '../../../../../app/_locales/en/messages.json';
import MetaMetricsOptIn from './metametrics-opt-in-modal.container';
describe('MetaMetrics Opt In', () => {
diff --git a/ui/app/components/app/modals/modal.js b/ui/components/app/modals/modal.js
similarity index 98%
rename from ui/app/components/app/modals/modal.js
rename to ui/components/app/modals/modal.js
index 74373354c..ce4282df3 100644
--- a/ui/app/components/app/modals/modal.js
+++ b/ui/components/app/modals/modal.js
@@ -4,9 +4,9 @@ import React, { Component } from 'react';
import { connect } from 'react-redux';
import * as actions from '../../../store/actions';
import { resetCustomData as resetCustomGasData } from '../../../ducks/gas/gas.duck';
-import isMobileView from '../../../../lib/is-mobile-view';
-import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
-import { ENVIRONMENT_TYPE_POPUP } from '../../../../../shared/constants/app';
+import isMobileView from '../../../helpers/utils/is-mobile-view';
+import { getEnvironmentType } from '../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app';
// Modal Components
import ConfirmCustomizeGasModal from '../gas-customization/gas-modal-page-container';
diff --git a/ui/app/components/app/modals/new-account-modal/index.js b/ui/components/app/modals/new-account-modal/index.js
similarity index 100%
rename from ui/app/components/app/modals/new-account-modal/index.js
rename to ui/components/app/modals/new-account-modal/index.js
diff --git a/ui/app/components/app/modals/new-account-modal/index.scss b/ui/components/app/modals/new-account-modal/index.scss
similarity index 100%
rename from ui/app/components/app/modals/new-account-modal/index.scss
rename to ui/components/app/modals/new-account-modal/index.scss
diff --git a/ui/app/components/app/modals/new-account-modal/new-account-modal.component.js b/ui/components/app/modals/new-account-modal/new-account-modal.component.js
similarity index 100%
rename from ui/app/components/app/modals/new-account-modal/new-account-modal.component.js
rename to ui/components/app/modals/new-account-modal/new-account-modal.component.js
diff --git a/ui/app/components/app/modals/new-account-modal/new-account-modal.container.js b/ui/components/app/modals/new-account-modal/new-account-modal.container.js
similarity index 100%
rename from ui/app/components/app/modals/new-account-modal/new-account-modal.container.js
rename to ui/components/app/modals/new-account-modal/new-account-modal.container.js
diff --git a/ui/app/components/app/modals/qr-scanner/index.js b/ui/components/app/modals/qr-scanner/index.js
similarity index 100%
rename from ui/app/components/app/modals/qr-scanner/index.js
rename to ui/components/app/modals/qr-scanner/index.js
diff --git a/ui/app/components/app/modals/qr-scanner/index.scss b/ui/components/app/modals/qr-scanner/index.scss
similarity index 100%
rename from ui/app/components/app/modals/qr-scanner/index.scss
rename to ui/components/app/modals/qr-scanner/index.scss
diff --git a/ui/app/components/app/modals/qr-scanner/qr-scanner.component.js b/ui/components/app/modals/qr-scanner/qr-scanner.component.js
similarity index 97%
rename from ui/app/components/app/modals/qr-scanner/qr-scanner.component.js
rename to ui/components/app/modals/qr-scanner/qr-scanner.component.js
index 7ca6a5089..6cad31f6e 100644
--- a/ui/app/components/app/modals/qr-scanner/qr-scanner.component.js
+++ b/ui/components/app/modals/qr-scanner/qr-scanner.component.js
@@ -2,10 +2,10 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import log from 'loglevel';
import { BrowserQRCodeReader } from '@zxing/library';
-import { getEnvironmentType } from '../../../../../../app/scripts/lib/util';
-import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../shared/constants/app';
import Spinner from '../../../ui/spinner';
-import WebcamUtils from '../../../../../lib/webcam-utils';
+import WebcamUtils from '../../../../helpers/utils/webcam-utils';
import PageContainerFooter from '../../../ui/page-container/page-container-footer/page-container-footer.component';
const READY_STATE = {
diff --git a/ui/app/components/app/modals/qr-scanner/qr-scanner.container.js b/ui/components/app/modals/qr-scanner/qr-scanner.container.js
similarity index 100%
rename from ui/app/components/app/modals/qr-scanner/qr-scanner.container.js
rename to ui/components/app/modals/qr-scanner/qr-scanner.container.js
diff --git a/ui/app/components/app/modals/reject-transactions/index.js b/ui/components/app/modals/reject-transactions/index.js
similarity index 100%
rename from ui/app/components/app/modals/reject-transactions/index.js
rename to ui/components/app/modals/reject-transactions/index.js
diff --git a/ui/app/components/app/modals/reject-transactions/index.scss b/ui/components/app/modals/reject-transactions/index.scss
similarity index 100%
rename from ui/app/components/app/modals/reject-transactions/index.scss
rename to ui/components/app/modals/reject-transactions/index.scss
diff --git a/ui/app/components/app/modals/reject-transactions/reject-transactions.component.js b/ui/components/app/modals/reject-transactions/reject-transactions.component.js
similarity index 100%
rename from ui/app/components/app/modals/reject-transactions/reject-transactions.component.js
rename to ui/components/app/modals/reject-transactions/reject-transactions.component.js
diff --git a/ui/app/components/app/modals/reject-transactions/reject-transactions.container.js b/ui/components/app/modals/reject-transactions/reject-transactions.container.js
similarity index 100%
rename from ui/app/components/app/modals/reject-transactions/reject-transactions.container.js
rename to ui/components/app/modals/reject-transactions/reject-transactions.container.js
diff --git a/ui/app/components/app/modals/reject-transactions/reject-transactions.test.js b/ui/components/app/modals/reject-transactions/reject-transactions.test.js
similarity index 100%
rename from ui/app/components/app/modals/reject-transactions/reject-transactions.test.js
rename to ui/components/app/modals/reject-transactions/reject-transactions.test.js
diff --git a/ui/app/components/app/modals/transaction-confirmed/index.js b/ui/components/app/modals/transaction-confirmed/index.js
similarity index 100%
rename from ui/app/components/app/modals/transaction-confirmed/index.js
rename to ui/components/app/modals/transaction-confirmed/index.js
diff --git a/ui/app/components/app/modals/transaction-confirmed/index.scss b/ui/components/app/modals/transaction-confirmed/index.scss
similarity index 100%
rename from ui/app/components/app/modals/transaction-confirmed/index.scss
rename to ui/components/app/modals/transaction-confirmed/index.scss
diff --git a/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.component.js b/ui/components/app/modals/transaction-confirmed/transaction-confirmed.component.js
similarity index 100%
rename from ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.component.js
rename to ui/components/app/modals/transaction-confirmed/transaction-confirmed.component.js
diff --git a/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.container.js b/ui/components/app/modals/transaction-confirmed/transaction-confirmed.container.js
similarity index 100%
rename from ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.container.js
rename to ui/components/app/modals/transaction-confirmed/transaction-confirmed.container.js
diff --git a/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.test.js b/ui/components/app/modals/transaction-confirmed/transaction-confirmed.test.js
similarity index 100%
rename from ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.test.js
rename to ui/components/app/modals/transaction-confirmed/transaction-confirmed.test.js
diff --git a/ui/app/components/app/multiple-notifications/index.js b/ui/components/app/multiple-notifications/index.js
similarity index 100%
rename from ui/app/components/app/multiple-notifications/index.js
rename to ui/components/app/multiple-notifications/index.js
diff --git a/ui/app/components/app/multiple-notifications/index.scss b/ui/components/app/multiple-notifications/index.scss
similarity index 100%
rename from ui/app/components/app/multiple-notifications/index.scss
rename to ui/components/app/multiple-notifications/index.scss
diff --git a/ui/app/components/app/multiple-notifications/multiple-notifications.component.js b/ui/components/app/multiple-notifications/multiple-notifications.component.js
similarity index 100%
rename from ui/app/components/app/multiple-notifications/multiple-notifications.component.js
rename to ui/components/app/multiple-notifications/multiple-notifications.component.js
diff --git a/ui/app/components/app/network-display/index.js b/ui/components/app/network-display/index.js
similarity index 100%
rename from ui/app/components/app/network-display/index.js
rename to ui/components/app/network-display/index.js
diff --git a/ui/app/components/app/network-display/index.scss b/ui/components/app/network-display/index.scss
similarity index 100%
rename from ui/app/components/app/network-display/index.scss
rename to ui/components/app/network-display/index.scss
diff --git a/ui/app/components/app/network-display/network-display.js b/ui/components/app/network-display/network-display.js
similarity index 98%
rename from ui/app/components/app/network-display/network-display.js
rename to ui/components/app/network-display/network-display.js
index ba83bb5c9..87b851535 100644
--- a/ui/app/components/app/network-display/network-display.js
+++ b/ui/components/app/network-display/network-display.js
@@ -5,7 +5,7 @@ import { useSelector } from 'react-redux';
import {
NETWORK_TYPE_RPC,
NETWORK_TYPE_TO_ID_MAP,
-} from '../../../../../shared/constants/network';
+} from '../../../../shared/constants/network';
import LoadingIndicator from '../../ui/loading-indicator';
import ColorIndicator from '../../ui/color-indicator';
diff --git a/ui/app/components/app/permission-page-container/index.js b/ui/components/app/permission-page-container/index.js
similarity index 100%
rename from ui/app/components/app/permission-page-container/index.js
rename to ui/components/app/permission-page-container/index.js
diff --git a/ui/app/components/app/permission-page-container/index.scss b/ui/components/app/permission-page-container/index.scss
similarity index 100%
rename from ui/app/components/app/permission-page-container/index.scss
rename to ui/components/app/permission-page-container/index.scss
diff --git a/ui/app/components/app/permission-page-container/permission-page-container-content/index.js b/ui/components/app/permission-page-container/permission-page-container-content/index.js
similarity index 100%
rename from ui/app/components/app/permission-page-container/permission-page-container-content/index.js
rename to ui/components/app/permission-page-container/permission-page-container-content/index.js
diff --git a/ui/app/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js b/ui/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js
similarity index 100%
rename from ui/app/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js
rename to ui/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js
diff --git a/ui/app/components/app/permission-page-container/permission-page-container.component.js b/ui/components/app/permission-page-container/permission-page-container.component.js
similarity index 100%
rename from ui/app/components/app/permission-page-container/permission-page-container.component.js
rename to ui/components/app/permission-page-container/permission-page-container.component.js
diff --git a/ui/app/components/app/permission-page-container/permission-page-container.container.js b/ui/components/app/permission-page-container/permission-page-container.container.js
similarity index 100%
rename from ui/app/components/app/permission-page-container/permission-page-container.container.js
rename to ui/components/app/permission-page-container/permission-page-container.container.js
diff --git a/ui/app/components/app/permissions-connect-footer/index.js b/ui/components/app/permissions-connect-footer/index.js
similarity index 100%
rename from ui/app/components/app/permissions-connect-footer/index.js
rename to ui/components/app/permissions-connect-footer/index.js
diff --git a/ui/app/components/app/permissions-connect-footer/index.scss b/ui/components/app/permissions-connect-footer/index.scss
similarity index 100%
rename from ui/app/components/app/permissions-connect-footer/index.scss
rename to ui/components/app/permissions-connect-footer/index.scss
diff --git a/ui/app/components/app/permissions-connect-footer/permissions-connect-footer.component.js b/ui/components/app/permissions-connect-footer/permissions-connect-footer.component.js
similarity index 100%
rename from ui/app/components/app/permissions-connect-footer/permissions-connect-footer.component.js
rename to ui/components/app/permissions-connect-footer/permissions-connect-footer.component.js
diff --git a/ui/app/components/app/permissions-connect-header/index.js b/ui/components/app/permissions-connect-header/index.js
similarity index 100%
rename from ui/app/components/app/permissions-connect-header/index.js
rename to ui/components/app/permissions-connect-header/index.js
diff --git a/ui/app/components/app/permissions-connect-header/index.scss b/ui/components/app/permissions-connect-header/index.scss
similarity index 100%
rename from ui/app/components/app/permissions-connect-header/index.scss
rename to ui/components/app/permissions-connect-header/index.scss
diff --git a/ui/app/components/app/permissions-connect-header/permissions-connect-header.component.js b/ui/components/app/permissions-connect-header/permissions-connect-header.component.js
similarity index 100%
rename from ui/app/components/app/permissions-connect-header/permissions-connect-header.component.js
rename to ui/components/app/permissions-connect-header/permissions-connect-header.component.js
diff --git a/ui/app/components/app/selected-account/index.js b/ui/components/app/selected-account/index.js
similarity index 100%
rename from ui/app/components/app/selected-account/index.js
rename to ui/components/app/selected-account/index.js
diff --git a/ui/app/components/app/selected-account/index.scss b/ui/components/app/selected-account/index.scss
similarity index 100%
rename from ui/app/components/app/selected-account/index.scss
rename to ui/components/app/selected-account/index.scss
diff --git a/ui/app/components/app/selected-account/selected-account-component.test.js b/ui/components/app/selected-account/selected-account-component.test.js
similarity index 100%
rename from ui/app/components/app/selected-account/selected-account-component.test.js
rename to ui/components/app/selected-account/selected-account-component.test.js
diff --git a/ui/app/components/app/selected-account/selected-account.component.js b/ui/components/app/selected-account/selected-account.component.js
similarity index 95%
rename from ui/app/components/app/selected-account/selected-account.component.js
rename to ui/components/app/selected-account/selected-account.component.js
index 40d8c2a4e..b52dd033f 100644
--- a/ui/app/components/app/selected-account/selected-account.component.js
+++ b/ui/components/app/selected-account/selected-account.component.js
@@ -4,7 +4,7 @@ import copyToClipboard from 'copy-to-clipboard';
import { shortenAddress } from '../../../helpers/utils/util';
import Tooltip from '../../ui/tooltip';
-import { toChecksumHexAddress } from '../../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
class SelectedAccount extends Component {
state = {
diff --git a/ui/app/components/app/selected-account/selected-account.container.js b/ui/components/app/selected-account/selected-account.container.js
similarity index 100%
rename from ui/app/components/app/selected-account/selected-account.container.js
rename to ui/components/app/selected-account/selected-account.container.js
diff --git a/ui/app/components/app/sidebars/index.js b/ui/components/app/sidebars/index.js
similarity index 100%
rename from ui/app/components/app/sidebars/index.js
rename to ui/components/app/sidebars/index.js
diff --git a/ui/app/components/app/sidebars/index.scss b/ui/components/app/sidebars/index.scss
similarity index 100%
rename from ui/app/components/app/sidebars/index.scss
rename to ui/components/app/sidebars/index.scss
diff --git a/ui/app/components/app/sidebars/sidebar-content.scss b/ui/components/app/sidebars/sidebar-content.scss
similarity index 100%
rename from ui/app/components/app/sidebars/sidebar-content.scss
rename to ui/components/app/sidebars/sidebar-content.scss
diff --git a/ui/app/components/app/sidebars/sidebar.component.js b/ui/components/app/sidebars/sidebar.component.js
similarity index 100%
rename from ui/app/components/app/sidebars/sidebar.component.js
rename to ui/components/app/sidebars/sidebar.component.js
diff --git a/ui/app/components/app/sidebars/sidebar.component.test.js b/ui/components/app/sidebars/sidebar.component.test.js
similarity index 100%
rename from ui/app/components/app/sidebars/sidebar.component.test.js
rename to ui/components/app/sidebars/sidebar.component.test.js
diff --git a/ui/app/components/app/signature-request-original/index.js b/ui/components/app/signature-request-original/index.js
similarity index 100%
rename from ui/app/components/app/signature-request-original/index.js
rename to ui/components/app/signature-request-original/index.js
diff --git a/ui/app/components/app/signature-request-original/index.scss b/ui/components/app/signature-request-original/index.scss
similarity index 100%
rename from ui/app/components/app/signature-request-original/index.scss
rename to ui/components/app/signature-request-original/index.scss
diff --git a/ui/app/components/app/signature-request-original/signature-request-original.component.js b/ui/components/app/signature-request-original/signature-request-original.component.js
similarity index 98%
rename from ui/app/components/app/signature-request-original/signature-request-original.component.js
rename to ui/components/app/signature-request-original/signature-request-original.component.js
index ae62fcad9..07ef225cc 100644
--- a/ui/app/components/app/signature-request-original/signature-request-original.component.js
+++ b/ui/components/app/signature-request-original/signature-request-original.component.js
@@ -7,8 +7,8 @@ import { ObjectInspector } from 'react-inspector';
import {
ENVIRONMENT_TYPE_NOTIFICATION,
MESSAGE_TYPE,
-} from '../../../../../shared/constants/app';
-import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
+} from '../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../../app/scripts/lib/util';
import Identicon from '../../ui/identicon';
import AccountListItem from '../account-list-item';
import { conversionUtil } from '../../../helpers/utils/conversion-util';
diff --git a/ui/app/components/app/signature-request-original/signature-request-original.container.js b/ui/components/app/signature-request-original/signature-request-original.container.js
similarity index 96%
rename from ui/app/components/app/signature-request-original/signature-request-original.container.js
rename to ui/components/app/signature-request-original/signature-request-original.container.js
index c32e30d66..f6181cc5b 100644
--- a/ui/app/components/app/signature-request-original/signature-request-original.container.js
+++ b/ui/components/app/signature-request-original/signature-request-original.container.js
@@ -2,7 +2,7 @@ import { connect } from 'react-redux';
import { compose } from 'redux';
import { withRouter } from 'react-router-dom';
-import { MESSAGE_TYPE } from '../../../../../shared/constants/app';
+import { MESSAGE_TYPE } from '../../../../shared/constants/app';
import { goHome } from '../../../store/actions';
import {
accountsWithSendEtherInfoSelector,
diff --git a/ui/app/components/app/signature-request/index.js b/ui/components/app/signature-request/index.js
similarity index 100%
rename from ui/app/components/app/signature-request/index.js
rename to ui/components/app/signature-request/index.js
diff --git a/ui/app/components/app/signature-request/index.scss b/ui/components/app/signature-request/index.scss
similarity index 100%
rename from ui/app/components/app/signature-request/index.scss
rename to ui/components/app/signature-request/index.scss
diff --git a/ui/app/components/app/signature-request/signature-request-footer/index.js b/ui/components/app/signature-request/signature-request-footer/index.js
similarity index 100%
rename from ui/app/components/app/signature-request/signature-request-footer/index.js
rename to ui/components/app/signature-request/signature-request-footer/index.js
diff --git a/ui/app/components/app/signature-request/signature-request-footer/index.scss b/ui/components/app/signature-request/signature-request-footer/index.scss
similarity index 100%
rename from ui/app/components/app/signature-request/signature-request-footer/index.scss
rename to ui/components/app/signature-request/signature-request-footer/index.scss
diff --git a/ui/app/components/app/signature-request/signature-request-footer/signature-request-footer.component.js b/ui/components/app/signature-request/signature-request-footer/signature-request-footer.component.js
similarity index 100%
rename from ui/app/components/app/signature-request/signature-request-footer/signature-request-footer.component.js
rename to ui/components/app/signature-request/signature-request-footer/signature-request-footer.component.js
diff --git a/ui/app/components/app/signature-request/signature-request-header/index.js b/ui/components/app/signature-request/signature-request-header/index.js
similarity index 100%
rename from ui/app/components/app/signature-request/signature-request-header/index.js
rename to ui/components/app/signature-request/signature-request-header/index.js
diff --git a/ui/app/components/app/signature-request/signature-request-header/index.scss b/ui/components/app/signature-request/signature-request-header/index.scss
similarity index 100%
rename from ui/app/components/app/signature-request/signature-request-header/index.scss
rename to ui/components/app/signature-request/signature-request-header/index.scss
diff --git a/ui/app/components/app/signature-request/signature-request-header/signature-request-header.component.js b/ui/components/app/signature-request/signature-request-header/signature-request-header.component.js
similarity index 100%
rename from ui/app/components/app/signature-request/signature-request-header/signature-request-header.component.js
rename to ui/components/app/signature-request/signature-request-header/signature-request-header.component.js
diff --git a/ui/app/components/app/signature-request/signature-request-message/index.js b/ui/components/app/signature-request/signature-request-message/index.js
similarity index 100%
rename from ui/app/components/app/signature-request/signature-request-message/index.js
rename to ui/components/app/signature-request/signature-request-message/index.js
diff --git a/ui/app/components/app/signature-request/signature-request-message/index.scss b/ui/components/app/signature-request/signature-request-message/index.scss
similarity index 100%
rename from ui/app/components/app/signature-request/signature-request-message/index.scss
rename to ui/components/app/signature-request/signature-request-message/index.scss
diff --git a/ui/app/components/app/signature-request/signature-request-message/signature-request-message.component.js b/ui/components/app/signature-request/signature-request-message/signature-request-message.component.js
similarity index 100%
rename from ui/app/components/app/signature-request/signature-request-message/signature-request-message.component.js
rename to ui/components/app/signature-request/signature-request-message/signature-request-message.component.js
diff --git a/ui/app/components/app/signature-request/signature-request.component.js b/ui/components/app/signature-request/signature-request.component.js
similarity index 97%
rename from ui/app/components/app/signature-request/signature-request.component.js
rename to ui/components/app/signature-request/signature-request.component.js
index 9515ac02a..f19d077ae 100644
--- a/ui/app/components/app/signature-request/signature-request.component.js
+++ b/ui/components/app/signature-request/signature-request.component.js
@@ -1,6 +1,6 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
-import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
+import { getEnvironmentType } from '../../../../app/scripts/lib/util';
import Identicon from '../../ui/identicon';
import Header from './signature-request-header';
import Footer from './signature-request-footer';
diff --git a/ui/app/components/app/signature-request/signature-request.component.test.js b/ui/components/app/signature-request/signature-request.component.test.js
similarity index 87%
rename from ui/app/components/app/signature-request/signature-request.component.test.js
rename to ui/components/app/signature-request/signature-request.component.test.js
index 1afa1b98c..12da052ff 100644
--- a/ui/app/components/app/signature-request/signature-request.component.test.js
+++ b/ui/components/app/signature-request/signature-request.component.test.js
@@ -1,12 +1,12 @@
import React from 'react';
-import shallow from '../../../../lib/shallow-with-context';
+import { shallowWithContext } from '../../../../test/lib/render-helpers';
import SignatureRequest from './signature-request.component';
describe('Signature Request Component', () => {
describe('render', () => {
const fromAddress = '0x123456789abcdef';
it('should render a div with one child', () => {
- const wrapper = shallow(
+ const wrapper = shallowWithContext(
undefined}
cancel={() => undefined}
diff --git a/ui/components/app/signature-request/signature-request.constants.js b/ui/components/app/signature-request/signature-request.constants.js
new file mode 100644
index 000000000..e17841a0c
--- /dev/null
+++ b/ui/components/app/signature-request/signature-request.constants.js
@@ -0,0 +1,3 @@
+import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../shared/constants/app';
+
+export { ENVIRONMENT_TYPE_NOTIFICATION };
diff --git a/ui/app/components/app/signature-request/signature-request.container.js b/ui/components/app/signature-request/signature-request.container.js
similarity index 95%
rename from ui/app/components/app/signature-request/signature-request.container.js
rename to ui/components/app/signature-request/signature-request.container.js
index 4c45a256d..2d3546720 100644
--- a/ui/app/components/app/signature-request/signature-request.container.js
+++ b/ui/components/app/signature-request/signature-request.container.js
@@ -2,7 +2,7 @@ import { connect } from 'react-redux';
import { clearConfirmTransaction } from '../../../ducks/confirm-transaction/confirm-transaction.duck';
import { accountsWithSendEtherInfoSelector } from '../../../selectors';
import { getAccountByAddress } from '../../../helpers/utils/util';
-import { MESSAGE_TYPE } from '../../../../../shared/constants/app';
+import { MESSAGE_TYPE } from '../../../../shared/constants/app';
import SignatureRequest from './signature-request.component';
function mapStateToProps(state) {
diff --git a/ui/app/components/app/signature-request/signature-request.container.test.js b/ui/components/app/signature-request/signature-request.container.test.js
similarity index 97%
rename from ui/app/components/app/signature-request/signature-request.container.test.js
rename to ui/components/app/signature-request/signature-request.container.test.js
index c4de25b1a..c0bc03540 100644
--- a/ui/app/components/app/signature-request/signature-request.container.test.js
+++ b/ui/components/app/signature-request/signature-request.container.test.js
@@ -2,7 +2,7 @@ import React from 'react';
import { Provider } from 'react-redux';
import sinon from 'sinon';
import configureMockStore from 'redux-mock-store';
-import { mountWithRouter } from '../../../../../test/lib/render-helpers';
+import { mountWithRouter } from '../../../../test/lib/render-helpers';
import SignatureRequest from './signature-request.container';
describe('Signature Request', () => {
diff --git a/ui/app/components/app/signature-request/signature-request.stories.js b/ui/components/app/signature-request/signature-request.stories.js
similarity index 93%
rename from ui/app/components/app/signature-request/signature-request.stories.js
rename to ui/components/app/signature-request/signature-request.stories.js
index fd121cc86..1590f84e1 100644
--- a/ui/app/components/app/signature-request/signature-request.stories.js
+++ b/ui/components/app/signature-request/signature-request.stories.js
@@ -1,5 +1,5 @@
import React from 'react';
-import testData from '../../../../../.storybook/test-data';
+import testData from '../../../../.storybook/test-data';
import SignatureRequest from './signature-request.component';
const primaryIdentity = Object.values(testData.metamask.identities)[0];
diff --git a/ui/app/components/app/tab-bar/index.js b/ui/components/app/tab-bar/index.js
similarity index 100%
rename from ui/app/components/app/tab-bar/index.js
rename to ui/components/app/tab-bar/index.js
diff --git a/ui/app/components/app/tab-bar/index.scss b/ui/components/app/tab-bar/index.scss
similarity index 100%
rename from ui/app/components/app/tab-bar/index.scss
rename to ui/components/app/tab-bar/index.scss
diff --git a/ui/app/components/app/tab-bar/tab-bar.js b/ui/components/app/tab-bar/tab-bar.js
similarity index 100%
rename from ui/app/components/app/tab-bar/tab-bar.js
rename to ui/components/app/tab-bar/tab-bar.js
diff --git a/ui/app/components/app/token-cell/index.js b/ui/components/app/token-cell/index.js
similarity index 100%
rename from ui/app/components/app/token-cell/index.js
rename to ui/components/app/token-cell/index.js
diff --git a/ui/app/components/app/token-cell/token-cell.js b/ui/components/app/token-cell/token-cell.js
similarity index 100%
rename from ui/app/components/app/token-cell/token-cell.js
rename to ui/components/app/token-cell/token-cell.js
diff --git a/ui/app/components/app/token-cell/token-cell.scss b/ui/components/app/token-cell/token-cell.scss
similarity index 100%
rename from ui/app/components/app/token-cell/token-cell.scss
rename to ui/components/app/token-cell/token-cell.scss
diff --git a/ui/app/components/app/token-cell/token-cell.test.js b/ui/components/app/token-cell/token-cell.test.js
similarity index 100%
rename from ui/app/components/app/token-cell/token-cell.test.js
rename to ui/components/app/token-cell/token-cell.test.js
diff --git a/ui/app/components/app/token-list/index.js b/ui/components/app/token-list/index.js
similarity index 100%
rename from ui/app/components/app/token-list/index.js
rename to ui/components/app/token-list/index.js
diff --git a/ui/app/components/app/token-list/token-list.js b/ui/components/app/token-list/token-list.js
similarity index 100%
rename from ui/app/components/app/token-list/token-list.js
rename to ui/components/app/token-list/token-list.js
diff --git a/ui/app/components/app/transaction-activity-log/index.js b/ui/components/app/transaction-activity-log/index.js
similarity index 100%
rename from ui/app/components/app/transaction-activity-log/index.js
rename to ui/components/app/transaction-activity-log/index.js
diff --git a/ui/app/components/app/transaction-activity-log/index.scss b/ui/components/app/transaction-activity-log/index.scss
similarity index 100%
rename from ui/app/components/app/transaction-activity-log/index.scss
rename to ui/components/app/transaction-activity-log/index.scss
diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log-icon/index.js b/ui/components/app/transaction-activity-log/transaction-activity-log-icon/index.js
similarity index 100%
rename from ui/app/components/app/transaction-activity-log/transaction-activity-log-icon/index.js
rename to ui/components/app/transaction-activity-log/transaction-activity-log-icon/index.js
diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.component.js b/ui/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.component.js
similarity index 100%
rename from ui/app/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.component.js
rename to ui/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.component.js
diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log.component.js b/ui/components/app/transaction-activity-log/transaction-activity-log.component.js
similarity index 97%
rename from ui/app/components/app/transaction-activity-log/transaction-activity-log.component.js
rename to ui/components/app/transaction-activity-log/transaction-activity-log.component.js
index 215932e9f..91fb987f8 100644
--- a/ui/app/components/app/transaction-activity-log/transaction-activity-log.component.js
+++ b/ui/components/app/transaction-activity-log/transaction-activity-log.component.js
@@ -7,7 +7,7 @@ import {
getValueFromWeiHex,
} from '../../../helpers/utils/conversions.util';
import { formatDate } from '../../../helpers/utils/util';
-import { getBlockExplorerUrlForTx } from '../../../../../shared/modules/transaction.utils';
+import { getBlockExplorerUrlForTx } from '../../../../shared/modules/transaction.utils';
import TransactionActivityLogIcon from './transaction-activity-log-icon';
import { CONFIRMED_STATUS } from './transaction-activity-log.constants';
diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log.component.test.js b/ui/components/app/transaction-activity-log/transaction-activity-log.component.test.js
similarity index 100%
rename from ui/app/components/app/transaction-activity-log/transaction-activity-log.component.test.js
rename to ui/components/app/transaction-activity-log/transaction-activity-log.component.test.js
diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log.constants.js b/ui/components/app/transaction-activity-log/transaction-activity-log.constants.js
similarity index 100%
rename from ui/app/components/app/transaction-activity-log/transaction-activity-log.constants.js
rename to ui/components/app/transaction-activity-log/transaction-activity-log.constants.js
diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log.container.js b/ui/components/app/transaction-activity-log/transaction-activity-log.container.js
similarity index 100%
rename from ui/app/components/app/transaction-activity-log/transaction-activity-log.container.js
rename to ui/components/app/transaction-activity-log/transaction-activity-log.container.js
diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log.container.test.js b/ui/components/app/transaction-activity-log/transaction-activity-log.container.test.js
similarity index 100%
rename from ui/app/components/app/transaction-activity-log/transaction-activity-log.container.test.js
rename to ui/components/app/transaction-activity-log/transaction-activity-log.container.test.js
diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log.util.js b/ui/components/app/transaction-activity-log/transaction-activity-log.util.js
similarity index 99%
rename from ui/app/components/app/transaction-activity-log/transaction-activity-log.util.js
rename to ui/components/app/transaction-activity-log/transaction-activity-log.util.js
index 624e1027d..ee3d7ee0a 100644
--- a/ui/app/components/app/transaction-activity-log/transaction-activity-log.util.js
+++ b/ui/components/app/transaction-activity-log/transaction-activity-log.util.js
@@ -1,4 +1,4 @@
-import { TRANSACTION_TYPES } from '../../../../../shared/constants/transaction';
+import { TRANSACTION_TYPES } from '../../../../shared/constants/transaction';
import { getHexGasTotal } from '../../../helpers/utils/confirm-tx.util';
import {
diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log.util.test.js b/ui/components/app/transaction-activity-log/transaction-activity-log.util.test.js
similarity index 99%
rename from ui/app/components/app/transaction-activity-log/transaction-activity-log.util.test.js
rename to ui/components/app/transaction-activity-log/transaction-activity-log.util.test.js
index 16211afd4..af7adee79 100644
--- a/ui/app/components/app/transaction-activity-log/transaction-activity-log.util.test.js
+++ b/ui/components/app/transaction-activity-log/transaction-activity-log.util.test.js
@@ -1,11 +1,11 @@
import {
ROPSTEN_CHAIN_ID,
ROPSTEN_NETWORK_ID,
-} from '../../../../../shared/constants/network';
+} from '../../../../shared/constants/network';
import {
TRANSACTION_STATUSES,
TRANSACTION_TYPES,
-} from '../../../../../shared/constants/transaction';
+} from '../../../../shared/constants/transaction';
import {
combineTransactionHistories,
getActivities,
diff --git a/ui/app/components/app/transaction-breakdown/index.js b/ui/components/app/transaction-breakdown/index.js
similarity index 100%
rename from ui/app/components/app/transaction-breakdown/index.js
rename to ui/components/app/transaction-breakdown/index.js
diff --git a/ui/app/components/app/transaction-breakdown/index.scss b/ui/components/app/transaction-breakdown/index.scss
similarity index 100%
rename from ui/app/components/app/transaction-breakdown/index.scss
rename to ui/components/app/transaction-breakdown/index.scss
diff --git a/ui/app/components/app/transaction-breakdown/transaction-breakdown-row/index.js b/ui/components/app/transaction-breakdown/transaction-breakdown-row/index.js
similarity index 100%
rename from ui/app/components/app/transaction-breakdown/transaction-breakdown-row/index.js
rename to ui/components/app/transaction-breakdown/transaction-breakdown-row/index.js
diff --git a/ui/app/components/app/transaction-breakdown/transaction-breakdown-row/index.scss b/ui/components/app/transaction-breakdown/transaction-breakdown-row/index.scss
similarity index 100%
rename from ui/app/components/app/transaction-breakdown/transaction-breakdown-row/index.scss
rename to ui/components/app/transaction-breakdown/transaction-breakdown-row/index.scss
diff --git a/ui/app/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.js b/ui/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.js
similarity index 100%
rename from ui/app/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.js
rename to ui/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.js
diff --git a/ui/app/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.test.js b/ui/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.test.js
similarity index 100%
rename from ui/app/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.test.js
rename to ui/components/app/transaction-breakdown/transaction-breakdown-row/transaction-breakdown-row.component.test.js
diff --git a/ui/app/components/app/transaction-breakdown/transaction-breakdown.component.js b/ui/components/app/transaction-breakdown/transaction-breakdown.component.js
similarity index 100%
rename from ui/app/components/app/transaction-breakdown/transaction-breakdown.component.js
rename to ui/components/app/transaction-breakdown/transaction-breakdown.component.js
diff --git a/ui/app/components/app/transaction-breakdown/transaction-breakdown.component.test.js b/ui/components/app/transaction-breakdown/transaction-breakdown.component.test.js
similarity index 91%
rename from ui/app/components/app/transaction-breakdown/transaction-breakdown.component.test.js
rename to ui/components/app/transaction-breakdown/transaction-breakdown.component.test.js
index 9b34276db..fb7916c46 100644
--- a/ui/app/components/app/transaction-breakdown/transaction-breakdown.component.test.js
+++ b/ui/components/app/transaction-breakdown/transaction-breakdown.component.test.js
@@ -1,6 +1,6 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { TRANSACTION_STATUSES } from '../../../../../shared/constants/transaction';
+import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction';
import TransactionBreakdown from './transaction-breakdown.component';
describe('TransactionBreakdown Component', () => {
diff --git a/ui/app/components/app/transaction-breakdown/transaction-breakdown.container.js b/ui/components/app/transaction-breakdown/transaction-breakdown.container.js
similarity index 100%
rename from ui/app/components/app/transaction-breakdown/transaction-breakdown.container.js
rename to ui/components/app/transaction-breakdown/transaction-breakdown.container.js
diff --git a/ui/app/components/app/transaction-icon/index.js b/ui/components/app/transaction-icon/index.js
similarity index 100%
rename from ui/app/components/app/transaction-icon/index.js
rename to ui/components/app/transaction-icon/index.js
diff --git a/ui/app/components/app/transaction-icon/transaction-icon.js b/ui/components/app/transaction-icon/transaction-icon.js
similarity index 97%
rename from ui/app/components/app/transaction-icon/transaction-icon.js
rename to ui/components/app/transaction-icon/transaction-icon.js
index 1876e0535..ec1b2a605 100644
--- a/ui/app/components/app/transaction-icon/transaction-icon.js
+++ b/ui/components/app/transaction-icon/transaction-icon.js
@@ -11,7 +11,7 @@ import {
TRANSACTION_GROUP_CATEGORIES,
TRANSACTION_GROUP_STATUSES,
TRANSACTION_STATUSES,
-} from '../../../../../shared/constants/transaction';
+} from '../../../../shared/constants/transaction';
const ICON_MAP = {
[TRANSACTION_GROUP_CATEGORIES.APPROVAL]: Approve,
diff --git a/ui/app/components/app/transaction-icon/transaction-icon.scss b/ui/components/app/transaction-icon/transaction-icon.scss
similarity index 100%
rename from ui/app/components/app/transaction-icon/transaction-icon.scss
rename to ui/components/app/transaction-icon/transaction-icon.scss
diff --git a/ui/app/components/app/transaction-list-item-details/index.js b/ui/components/app/transaction-list-item-details/index.js
similarity index 100%
rename from ui/app/components/app/transaction-list-item-details/index.js
rename to ui/components/app/transaction-list-item-details/index.js
diff --git a/ui/app/components/app/transaction-list-item-details/index.scss b/ui/components/app/transaction-list-item-details/index.scss
similarity index 100%
rename from ui/app/components/app/transaction-list-item-details/index.scss
rename to ui/components/app/transaction-list-item-details/index.scss
diff --git a/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.js b/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.js
similarity index 98%
rename from ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.js
rename to ui/components/app/transaction-list-item-details/transaction-list-item-details.component.js
index c1256d7cb..c5f03eeb4 100644
--- a/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.js
+++ b/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.js
@@ -9,8 +9,8 @@ import Button from '../../ui/button';
import Tooltip from '../../ui/tooltip';
import Copy from '../../ui/icon/copy-icon.component';
import Popover from '../../ui/popover';
-import { getBlockExplorerUrlForTx } from '../../../../../shared/modules/transaction.utils';
-import { TRANSACTION_TYPES } from '../../../../../shared/constants/transaction';
+import { getBlockExplorerUrlForTx } from '../../../../shared/modules/transaction.utils';
+import { TRANSACTION_TYPES } from '../../../../shared/constants/transaction';
export default class TransactionListItemDetails extends PureComponent {
static contextTypes = {
diff --git a/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js b/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js
similarity index 98%
rename from ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js
rename to ui/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js
index 42ac3c83b..409ca1092 100644
--- a/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js
+++ b/ui/components/app/transaction-list-item-details/transaction-list-item-details.component.test.js
@@ -4,7 +4,7 @@ import Button from '../../ui/button';
import SenderToRecipient from '../../ui/sender-to-recipient';
import TransactionBreakdown from '../transaction-breakdown';
import TransactionActivityLog from '../transaction-activity-log';
-import { TRANSACTION_STATUSES } from '../../../../../shared/constants/transaction';
+import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction';
import TransactionListItemDetails from './transaction-list-item-details.component';
describe('TransactionListItemDetails Component', () => {
diff --git a/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.container.js b/ui/components/app/transaction-list-item-details/transaction-list-item-details.container.js
similarity index 94%
rename from ui/app/components/app/transaction-list-item-details/transaction-list-item-details.container.js
rename to ui/components/app/transaction-list-item-details/transaction-list-item-details.container.js
index f1cbf6237..280cec020 100644
--- a/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.container.js
+++ b/ui/components/app/transaction-list-item-details/transaction-list-item-details.container.js
@@ -4,7 +4,7 @@ import {
getAddressBook,
getRpcPrefsForCurrentProvider,
} from '../../../selectors';
-import { toChecksumHexAddress } from '../../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
import TransactionListItemDetails from './transaction-list-item-details.component';
const mapStateToProps = (state, ownProps) => {
diff --git a/ui/app/components/app/transaction-list-item/index.js b/ui/components/app/transaction-list-item/index.js
similarity index 100%
rename from ui/app/components/app/transaction-list-item/index.js
rename to ui/components/app/transaction-list-item/index.js
diff --git a/ui/app/components/app/transaction-list-item/index.scss b/ui/components/app/transaction-list-item/index.scss
similarity index 100%
rename from ui/app/components/app/transaction-list-item/index.scss
rename to ui/components/app/transaction-list-item/index.scss
diff --git a/ui/app/components/app/transaction-list-item/transaction-list-item.component.js b/ui/components/app/transaction-list-item/transaction-list-item.component.js
similarity index 99%
rename from ui/app/components/app/transaction-list-item/transaction-list-item.component.js
rename to ui/components/app/transaction-list-item/transaction-list-item.component.js
index d3f957904..98635cce4 100644
--- a/ui/app/components/app/transaction-list-item/transaction-list-item.component.js
+++ b/ui/components/app/transaction-list-item/transaction-list-item.component.js
@@ -17,7 +17,7 @@ import TransactionIcon from '../transaction-icon';
import {
TRANSACTION_GROUP_CATEGORIES,
TRANSACTION_STATUSES,
-} from '../../../../../shared/constants/transaction';
+} from '../../../../shared/constants/transaction';
export default function TransactionListItem({
transactionGroup,
diff --git a/ui/app/components/app/transaction-list/index.js b/ui/components/app/transaction-list/index.js
similarity index 100%
rename from ui/app/components/app/transaction-list/index.js
rename to ui/components/app/transaction-list/index.js
diff --git a/ui/app/components/app/transaction-list/index.scss b/ui/components/app/transaction-list/index.scss
similarity index 100%
rename from ui/app/components/app/transaction-list/index.scss
rename to ui/components/app/transaction-list/index.scss
diff --git a/ui/app/components/app/transaction-list/transaction-list.component.js b/ui/components/app/transaction-list/transaction-list.component.js
similarity index 98%
rename from ui/app/components/app/transaction-list/transaction-list.component.js
rename to ui/components/app/transaction-list/transaction-list.component.js
index 389a76025..6e05a40ea 100644
--- a/ui/app/components/app/transaction-list/transaction-list.component.js
+++ b/ui/components/app/transaction-list/transaction-list.component.js
@@ -10,8 +10,8 @@ import { useI18nContext } from '../../../hooks/useI18nContext';
import TransactionListItem from '../transaction-list-item';
import Button from '../../ui/button';
import { TOKEN_CATEGORY_HASH } from '../../../helpers/constants/transactions';
-import { SWAPS_CHAINID_CONTRACT_ADDRESS_MAP } from '../../../../../shared/constants/swaps';
-import { TRANSACTION_TYPES } from '../../../../../shared/constants/transaction';
+import { SWAPS_CHAINID_CONTRACT_ADDRESS_MAP } from '../../../../shared/constants/swaps';
+import { TRANSACTION_TYPES } from '../../../../shared/constants/transaction';
const PAGE_INCREMENT = 10;
diff --git a/ui/app/components/app/transaction-status/index.js b/ui/components/app/transaction-status/index.js
similarity index 100%
rename from ui/app/components/app/transaction-status/index.js
rename to ui/components/app/transaction-status/index.js
diff --git a/ui/app/components/app/transaction-status/index.scss b/ui/components/app/transaction-status/index.scss
similarity index 100%
rename from ui/app/components/app/transaction-status/index.scss
rename to ui/components/app/transaction-status/index.scss
diff --git a/ui/app/components/app/transaction-status/transaction-status.component.js b/ui/components/app/transaction-status/transaction-status.component.js
similarity index 97%
rename from ui/app/components/app/transaction-status/transaction-status.component.js
rename to ui/components/app/transaction-status/transaction-status.component.js
index 6049a33a9..f8f5f8018 100644
--- a/ui/app/components/app/transaction-status/transaction-status.component.js
+++ b/ui/components/app/transaction-status/transaction-status.component.js
@@ -7,7 +7,7 @@ import { useI18nContext } from '../../../hooks/useI18nContext';
import {
TRANSACTION_GROUP_STATUSES,
TRANSACTION_STATUSES,
-} from '../../../../../shared/constants/transaction';
+} from '../../../../shared/constants/transaction';
const QUEUED_PSEUDO_STATUS = 'queued';
diff --git a/ui/app/components/app/transaction-status/transaction-status.component.test.js b/ui/components/app/transaction-status/transaction-status.component.test.js
similarity index 100%
rename from ui/app/components/app/transaction-status/transaction-status.component.test.js
rename to ui/components/app/transaction-status/transaction-status.component.test.js
diff --git a/ui/app/components/app/user-preferenced-currency-display/index.js b/ui/components/app/user-preferenced-currency-display/index.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-currency-display/index.js
rename to ui/components/app/user-preferenced-currency-display/index.js
diff --git a/ui/app/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js b/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js
rename to ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js
diff --git a/ui/app/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.test.js b/ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.test.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.test.js
rename to ui/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.test.js
diff --git a/ui/app/components/app/user-preferenced-currency-input/index.js b/ui/components/app/user-preferenced-currency-input/index.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-currency-input/index.js
rename to ui/components/app/user-preferenced-currency-input/index.js
diff --git a/ui/app/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.js b/ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.js
rename to ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.js
diff --git a/ui/app/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.test.js b/ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.test.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.test.js
rename to ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.component.test.js
diff --git a/ui/app/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.js b/ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.js
rename to ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.js
diff --git a/ui/app/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.test.js b/ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.test.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.test.js
rename to ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.container.test.js
diff --git a/ui/app/components/app/user-preferenced-token-input/index.js b/ui/components/app/user-preferenced-token-input/index.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-token-input/index.js
rename to ui/components/app/user-preferenced-token-input/index.js
diff --git a/ui/app/components/app/user-preferenced-token-input/user-preferenced-token-input.component.js b/ui/components/app/user-preferenced-token-input/user-preferenced-token-input.component.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-token-input/user-preferenced-token-input.component.js
rename to ui/components/app/user-preferenced-token-input/user-preferenced-token-input.component.js
diff --git a/ui/app/components/app/user-preferenced-token-input/user-preferenced-token-input.component.test.js b/ui/components/app/user-preferenced-token-input/user-preferenced-token-input.component.test.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-token-input/user-preferenced-token-input.component.test.js
rename to ui/components/app/user-preferenced-token-input/user-preferenced-token-input.component.test.js
diff --git a/ui/app/components/app/user-preferenced-token-input/user-preferenced-token-input.container.js b/ui/components/app/user-preferenced-token-input/user-preferenced-token-input.container.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-token-input/user-preferenced-token-input.container.js
rename to ui/components/app/user-preferenced-token-input/user-preferenced-token-input.container.js
diff --git a/ui/app/components/app/user-preferenced-token-input/user-preferenced-token-input.container.test.js b/ui/components/app/user-preferenced-token-input/user-preferenced-token-input.container.test.js
similarity index 100%
rename from ui/app/components/app/user-preferenced-token-input/user-preferenced-token-input.container.test.js
rename to ui/components/app/user-preferenced-token-input/user-preferenced-token-input.container.test.js
diff --git a/ui/app/components/app/wallet-overview/eth-overview.js b/ui/components/app/wallet-overview/eth-overview.js
similarity index 100%
rename from ui/app/components/app/wallet-overview/eth-overview.js
rename to ui/components/app/wallet-overview/eth-overview.js
diff --git a/ui/app/components/app/wallet-overview/index.js b/ui/components/app/wallet-overview/index.js
similarity index 100%
rename from ui/app/components/app/wallet-overview/index.js
rename to ui/components/app/wallet-overview/index.js
diff --git a/ui/app/components/app/wallet-overview/index.scss b/ui/components/app/wallet-overview/index.scss
similarity index 100%
rename from ui/app/components/app/wallet-overview/index.scss
rename to ui/components/app/wallet-overview/index.scss
diff --git a/ui/app/components/app/wallet-overview/token-overview.js b/ui/components/app/wallet-overview/token-overview.js
similarity index 100%
rename from ui/app/components/app/wallet-overview/token-overview.js
rename to ui/components/app/wallet-overview/token-overview.js
diff --git a/ui/app/components/app/wallet-overview/wallet-overview.js b/ui/components/app/wallet-overview/wallet-overview.js
similarity index 100%
rename from ui/app/components/app/wallet-overview/wallet-overview.js
rename to ui/components/app/wallet-overview/wallet-overview.js
diff --git a/ui/app/components/app/whats-new-popup/index.js b/ui/components/app/whats-new-popup/index.js
similarity index 100%
rename from ui/app/components/app/whats-new-popup/index.js
rename to ui/components/app/whats-new-popup/index.js
diff --git a/ui/app/components/app/whats-new-popup/index.scss b/ui/components/app/whats-new-popup/index.scss
similarity index 100%
rename from ui/app/components/app/whats-new-popup/index.scss
rename to ui/components/app/whats-new-popup/index.scss
diff --git a/ui/app/components/app/whats-new-popup/whats-new-popup.js b/ui/components/app/whats-new-popup/whats-new-popup.js
similarity index 98%
rename from ui/app/components/app/whats-new-popup/whats-new-popup.js
rename to ui/components/app/whats-new-popup/whats-new-popup.js
index be9415d4b..65abee0c3 100644
--- a/ui/app/components/app/whats-new-popup/whats-new-popup.js
+++ b/ui/components/app/whats-new-popup/whats-new-popup.js
@@ -9,7 +9,7 @@ import Button from '../../ui/button';
import Popover from '../../ui/popover';
import Typography from '../../ui/typography';
import { updateViewedNotifications } from '../../../store/actions';
-import { getTranslatedUINoficiations } from '../../../../../shared/notifications';
+import { getTranslatedUINoficiations } from '../../../../shared/notifications';
import { getSortedNotificationsToShow } from '../../../selectors';
import { TYPOGRAPHY } from '../../../helpers/constants/design-system';
diff --git a/ui/app/components/ui/account-mismatch-warning/acccount-mismatch-warning.component.test.js b/ui/components/ui/account-mismatch-warning/acccount-mismatch-warning.component.test.js
similarity index 100%
rename from ui/app/components/ui/account-mismatch-warning/acccount-mismatch-warning.component.test.js
rename to ui/components/ui/account-mismatch-warning/acccount-mismatch-warning.component.test.js
diff --git a/ui/app/components/ui/account-mismatch-warning/account-mismatch-warning.component.js b/ui/components/ui/account-mismatch-warning/account-mismatch-warning.component.js
similarity index 100%
rename from ui/app/components/ui/account-mismatch-warning/account-mismatch-warning.component.js
rename to ui/components/ui/account-mismatch-warning/account-mismatch-warning.component.js
diff --git a/ui/app/components/ui/account-mismatch-warning/index.scss b/ui/components/ui/account-mismatch-warning/index.scss
similarity index 100%
rename from ui/app/components/ui/account-mismatch-warning/index.scss
rename to ui/components/ui/account-mismatch-warning/index.scss
diff --git a/ui/app/components/ui/alert-circle-icon/alert-circle-icon.component.js b/ui/components/ui/alert-circle-icon/alert-circle-icon.component.js
similarity index 100%
rename from ui/app/components/ui/alert-circle-icon/alert-circle-icon.component.js
rename to ui/components/ui/alert-circle-icon/alert-circle-icon.component.js
diff --git a/ui/app/components/ui/alert-circle-icon/alert-circle-icon.stories.js b/ui/components/ui/alert-circle-icon/alert-circle-icon.stories.js
similarity index 100%
rename from ui/app/components/ui/alert-circle-icon/alert-circle-icon.stories.js
rename to ui/components/ui/alert-circle-icon/alert-circle-icon.stories.js
diff --git a/ui/app/components/ui/alert-circle-icon/index.js b/ui/components/ui/alert-circle-icon/index.js
similarity index 100%
rename from ui/app/components/ui/alert-circle-icon/index.js
rename to ui/components/ui/alert-circle-icon/index.js
diff --git a/ui/app/components/ui/alert-circle-icon/index.scss b/ui/components/ui/alert-circle-icon/index.scss
similarity index 100%
rename from ui/app/components/ui/alert-circle-icon/index.scss
rename to ui/components/ui/alert-circle-icon/index.scss
diff --git a/ui/app/components/ui/alert/index.js b/ui/components/ui/alert/index.js
similarity index 100%
rename from ui/app/components/ui/alert/index.js
rename to ui/components/ui/alert/index.js
diff --git a/ui/app/components/ui/alert/index.scss b/ui/components/ui/alert/index.scss
similarity index 100%
rename from ui/app/components/ui/alert/index.scss
rename to ui/components/ui/alert/index.scss
diff --git a/ui/app/components/ui/alert/index.test.js b/ui/components/ui/alert/index.test.js
similarity index 100%
rename from ui/app/components/ui/alert/index.test.js
rename to ui/components/ui/alert/index.test.js
diff --git a/ui/app/components/ui/box/box.js b/ui/components/ui/box/box.js
similarity index 100%
rename from ui/app/components/ui/box/box.js
rename to ui/components/ui/box/box.js
diff --git a/ui/app/components/ui/box/box.scss b/ui/components/ui/box/box.scss
similarity index 100%
rename from ui/app/components/ui/box/box.scss
rename to ui/components/ui/box/box.scss
diff --git a/ui/app/components/ui/box/box.stories.js b/ui/components/ui/box/box.stories.js
similarity index 100%
rename from ui/app/components/ui/box/box.stories.js
rename to ui/components/ui/box/box.stories.js
diff --git a/ui/app/components/ui/box/index.js b/ui/components/ui/box/index.js
similarity index 100%
rename from ui/app/components/ui/box/index.js
rename to ui/components/ui/box/index.js
diff --git a/ui/app/components/ui/breadcrumbs/breadcrumbs.component.js b/ui/components/ui/breadcrumbs/breadcrumbs.component.js
similarity index 100%
rename from ui/app/components/ui/breadcrumbs/breadcrumbs.component.js
rename to ui/components/ui/breadcrumbs/breadcrumbs.component.js
diff --git a/ui/app/components/ui/breadcrumbs/breadcrumbs.component.test.js b/ui/components/ui/breadcrumbs/breadcrumbs.component.test.js
similarity index 100%
rename from ui/app/components/ui/breadcrumbs/breadcrumbs.component.test.js
rename to ui/components/ui/breadcrumbs/breadcrumbs.component.test.js
diff --git a/ui/app/components/ui/breadcrumbs/index.js b/ui/components/ui/breadcrumbs/index.js
similarity index 100%
rename from ui/app/components/ui/breadcrumbs/index.js
rename to ui/components/ui/breadcrumbs/index.js
diff --git a/ui/app/components/ui/breadcrumbs/index.scss b/ui/components/ui/breadcrumbs/index.scss
similarity index 100%
rename from ui/app/components/ui/breadcrumbs/index.scss
rename to ui/components/ui/breadcrumbs/index.scss
diff --git a/ui/app/components/ui/button-group/button-group-component.test.js b/ui/components/ui/button-group/button-group-component.test.js
similarity index 100%
rename from ui/app/components/ui/button-group/button-group-component.test.js
rename to ui/components/ui/button-group/button-group-component.test.js
diff --git a/ui/app/components/ui/button-group/button-group.component.js b/ui/components/ui/button-group/button-group.component.js
similarity index 100%
rename from ui/app/components/ui/button-group/button-group.component.js
rename to ui/components/ui/button-group/button-group.component.js
diff --git a/ui/app/components/ui/button-group/button-group.stories.js b/ui/components/ui/button-group/button-group.stories.js
similarity index 100%
rename from ui/app/components/ui/button-group/button-group.stories.js
rename to ui/components/ui/button-group/button-group.stories.js
diff --git a/ui/app/components/ui/button-group/index.js b/ui/components/ui/button-group/index.js
similarity index 100%
rename from ui/app/components/ui/button-group/index.js
rename to ui/components/ui/button-group/index.js
diff --git a/ui/app/components/ui/button-group/index.scss b/ui/components/ui/button-group/index.scss
similarity index 100%
rename from ui/app/components/ui/button-group/index.scss
rename to ui/components/ui/button-group/index.scss
diff --git a/ui/app/components/ui/button/button.component.js b/ui/components/ui/button/button.component.js
similarity index 100%
rename from ui/app/components/ui/button/button.component.js
rename to ui/components/ui/button/button.component.js
diff --git a/ui/app/components/ui/button/button.stories.js b/ui/components/ui/button/button.stories.js
similarity index 100%
rename from ui/app/components/ui/button/button.stories.js
rename to ui/components/ui/button/button.stories.js
diff --git a/ui/app/components/ui/button/buttons.scss b/ui/components/ui/button/buttons.scss
similarity index 100%
rename from ui/app/components/ui/button/buttons.scss
rename to ui/components/ui/button/buttons.scss
diff --git a/ui/app/components/ui/button/index.js b/ui/components/ui/button/index.js
similarity index 100%
rename from ui/app/components/ui/button/index.js
rename to ui/components/ui/button/index.js
diff --git a/ui/app/components/ui/callout/callout.js b/ui/components/ui/callout/callout.js
similarity index 100%
rename from ui/app/components/ui/callout/callout.js
rename to ui/components/ui/callout/callout.js
diff --git a/ui/app/components/ui/callout/callout.scss b/ui/components/ui/callout/callout.scss
similarity index 100%
rename from ui/app/components/ui/callout/callout.scss
rename to ui/components/ui/callout/callout.scss
diff --git a/ui/app/components/ui/callout/callout.stories.js b/ui/components/ui/callout/callout.stories.js
similarity index 100%
rename from ui/app/components/ui/callout/callout.stories.js
rename to ui/components/ui/callout/callout.stories.js
diff --git a/ui/app/components/ui/callout/index.js b/ui/components/ui/callout/index.js
similarity index 100%
rename from ui/app/components/ui/callout/index.js
rename to ui/components/ui/callout/index.js
diff --git a/ui/app/components/ui/card/card.component.js b/ui/components/ui/card/card.component.js
similarity index 100%
rename from ui/app/components/ui/card/card.component.js
rename to ui/components/ui/card/card.component.js
diff --git a/ui/app/components/ui/card/card.component.test.js b/ui/components/ui/card/card.component.test.js
similarity index 100%
rename from ui/app/components/ui/card/card.component.test.js
rename to ui/components/ui/card/card.component.test.js
diff --git a/ui/app/components/ui/card/index.js b/ui/components/ui/card/index.js
similarity index 100%
rename from ui/app/components/ui/card/index.js
rename to ui/components/ui/card/index.js
diff --git a/ui/app/components/ui/card/index.scss b/ui/components/ui/card/index.scss
similarity index 100%
rename from ui/app/components/ui/card/index.scss
rename to ui/components/ui/card/index.scss
diff --git a/ui/app/components/ui/check-box/check-box.component.js b/ui/components/ui/check-box/check-box.component.js
similarity index 100%
rename from ui/app/components/ui/check-box/check-box.component.js
rename to ui/components/ui/check-box/check-box.component.js
diff --git a/ui/app/components/ui/check-box/check-box.stories.js b/ui/components/ui/check-box/check-box.stories.js
similarity index 100%
rename from ui/app/components/ui/check-box/check-box.stories.js
rename to ui/components/ui/check-box/check-box.stories.js
diff --git a/ui/app/components/ui/check-box/index.js b/ui/components/ui/check-box/index.js
similarity index 100%
rename from ui/app/components/ui/check-box/index.js
rename to ui/components/ui/check-box/index.js
diff --git a/ui/app/components/ui/check-box/index.scss b/ui/components/ui/check-box/index.scss
similarity index 100%
rename from ui/app/components/ui/check-box/index.scss
rename to ui/components/ui/check-box/index.scss
diff --git a/ui/app/components/ui/chip/chip.js b/ui/components/ui/chip/chip.js
similarity index 100%
rename from ui/app/components/ui/chip/chip.js
rename to ui/components/ui/chip/chip.js
diff --git a/ui/app/components/ui/chip/chip.scss b/ui/components/ui/chip/chip.scss
similarity index 100%
rename from ui/app/components/ui/chip/chip.scss
rename to ui/components/ui/chip/chip.scss
diff --git a/ui/app/components/ui/chip/chip.stories.js b/ui/components/ui/chip/chip.stories.js
similarity index 100%
rename from ui/app/components/ui/chip/chip.stories.js
rename to ui/components/ui/chip/chip.stories.js
diff --git a/ui/app/components/ui/chip/index.js b/ui/components/ui/chip/index.js
similarity index 100%
rename from ui/app/components/ui/chip/index.js
rename to ui/components/ui/chip/index.js
diff --git a/ui/app/components/ui/circle-icon/circle-icon.component.js b/ui/components/ui/circle-icon/circle-icon.component.js
similarity index 100%
rename from ui/app/components/ui/circle-icon/circle-icon.component.js
rename to ui/components/ui/circle-icon/circle-icon.component.js
diff --git a/ui/app/components/ui/circle-icon/circle-icon.stories.js b/ui/components/ui/circle-icon/circle-icon.stories.js
similarity index 100%
rename from ui/app/components/ui/circle-icon/circle-icon.stories.js
rename to ui/components/ui/circle-icon/circle-icon.stories.js
diff --git a/ui/app/components/ui/circle-icon/index.js b/ui/components/ui/circle-icon/index.js
similarity index 100%
rename from ui/app/components/ui/circle-icon/index.js
rename to ui/components/ui/circle-icon/index.js
diff --git a/ui/app/components/ui/circle-icon/index.scss b/ui/components/ui/circle-icon/index.scss
similarity index 100%
rename from ui/app/components/ui/circle-icon/index.scss
rename to ui/components/ui/circle-icon/index.scss
diff --git a/ui/app/components/ui/color-indicator/color-indicator.js b/ui/components/ui/color-indicator/color-indicator.js
similarity index 100%
rename from ui/app/components/ui/color-indicator/color-indicator.js
rename to ui/components/ui/color-indicator/color-indicator.js
diff --git a/ui/app/components/ui/color-indicator/color-indicator.scss b/ui/components/ui/color-indicator/color-indicator.scss
similarity index 100%
rename from ui/app/components/ui/color-indicator/color-indicator.scss
rename to ui/components/ui/color-indicator/color-indicator.scss
diff --git a/ui/app/components/ui/color-indicator/color-indicator.stories.js b/ui/components/ui/color-indicator/color-indicator.stories.js
similarity index 100%
rename from ui/app/components/ui/color-indicator/color-indicator.stories.js
rename to ui/components/ui/color-indicator/color-indicator.stories.js
diff --git a/ui/app/components/ui/color-indicator/index.js b/ui/components/ui/color-indicator/index.js
similarity index 100%
rename from ui/app/components/ui/color-indicator/index.js
rename to ui/components/ui/color-indicator/index.js
diff --git a/ui/app/components/ui/confusable/confusable.component.js b/ui/components/ui/confusable/confusable.component.js
similarity index 100%
rename from ui/app/components/ui/confusable/confusable.component.js
rename to ui/components/ui/confusable/confusable.component.js
diff --git a/ui/app/components/ui/confusable/confusable.component.test.js b/ui/components/ui/confusable/confusable.component.test.js
similarity index 100%
rename from ui/app/components/ui/confusable/confusable.component.test.js
rename to ui/components/ui/confusable/confusable.component.test.js
diff --git a/ui/app/components/ui/confusable/index.js b/ui/components/ui/confusable/index.js
similarity index 100%
rename from ui/app/components/ui/confusable/index.js
rename to ui/components/ui/confusable/index.js
diff --git a/ui/app/components/ui/confusable/index.scss b/ui/components/ui/confusable/index.scss
similarity index 100%
rename from ui/app/components/ui/confusable/index.scss
rename to ui/components/ui/confusable/index.scss
diff --git a/ui/app/components/ui/currency-display/currency-display.component.js b/ui/components/ui/currency-display/currency-display.component.js
similarity index 100%
rename from ui/app/components/ui/currency-display/currency-display.component.js
rename to ui/components/ui/currency-display/currency-display.component.js
diff --git a/ui/app/components/ui/currency-display/currency-display.component.test.js b/ui/components/ui/currency-display/currency-display.component.test.js
similarity index 100%
rename from ui/app/components/ui/currency-display/currency-display.component.test.js
rename to ui/components/ui/currency-display/currency-display.component.test.js
diff --git a/ui/app/components/ui/currency-display/index.js b/ui/components/ui/currency-display/index.js
similarity index 100%
rename from ui/app/components/ui/currency-display/index.js
rename to ui/components/ui/currency-display/index.js
diff --git a/ui/app/components/ui/currency-display/index.scss b/ui/components/ui/currency-display/index.scss
similarity index 100%
rename from ui/app/components/ui/currency-display/index.scss
rename to ui/components/ui/currency-display/index.scss
diff --git a/ui/app/components/ui/currency-input/currency-input.component.js b/ui/components/ui/currency-input/currency-input.component.js
similarity index 100%
rename from ui/app/components/ui/currency-input/currency-input.component.js
rename to ui/components/ui/currency-input/currency-input.component.js
diff --git a/ui/app/components/ui/currency-input/currency-input.component.test.js b/ui/components/ui/currency-input/currency-input.component.test.js
similarity index 100%
rename from ui/app/components/ui/currency-input/currency-input.component.test.js
rename to ui/components/ui/currency-input/currency-input.component.test.js
diff --git a/ui/app/components/ui/currency-input/currency-input.container.js b/ui/components/ui/currency-input/currency-input.container.js
similarity index 100%
rename from ui/app/components/ui/currency-input/currency-input.container.js
rename to ui/components/ui/currency-input/currency-input.container.js
diff --git a/ui/app/components/ui/currency-input/currency-input.container.test.js b/ui/components/ui/currency-input/currency-input.container.test.js
similarity index 100%
rename from ui/app/components/ui/currency-input/currency-input.container.test.js
rename to ui/components/ui/currency-input/currency-input.container.test.js
diff --git a/ui/app/components/ui/currency-input/index.js b/ui/components/ui/currency-input/index.js
similarity index 100%
rename from ui/app/components/ui/currency-input/index.js
rename to ui/components/ui/currency-input/index.js
diff --git a/ui/app/components/ui/currency-input/index.scss b/ui/components/ui/currency-input/index.scss
similarity index 100%
rename from ui/app/components/ui/currency-input/index.scss
rename to ui/components/ui/currency-input/index.scss
diff --git a/ui/app/components/ui/definition-list/definition-list.js b/ui/components/ui/definition-list/definition-list.js
similarity index 100%
rename from ui/app/components/ui/definition-list/definition-list.js
rename to ui/components/ui/definition-list/definition-list.js
diff --git a/ui/app/components/ui/definition-list/definition-list.scss b/ui/components/ui/definition-list/definition-list.scss
similarity index 100%
rename from ui/app/components/ui/definition-list/definition-list.scss
rename to ui/components/ui/definition-list/definition-list.scss
diff --git a/ui/app/components/ui/definition-list/definition-list.stories.js b/ui/components/ui/definition-list/definition-list.stories.js
similarity index 100%
rename from ui/app/components/ui/definition-list/definition-list.stories.js
rename to ui/components/ui/definition-list/definition-list.stories.js
diff --git a/ui/app/components/ui/definition-list/index.js b/ui/components/ui/definition-list/index.js
similarity index 100%
rename from ui/app/components/ui/definition-list/index.js
rename to ui/components/ui/definition-list/index.js
diff --git a/ui/app/components/ui/dialog/dialog.scss b/ui/components/ui/dialog/dialog.scss
similarity index 100%
rename from ui/app/components/ui/dialog/dialog.scss
rename to ui/components/ui/dialog/dialog.scss
diff --git a/ui/app/components/ui/dialog/index.js b/ui/components/ui/dialog/index.js
similarity index 100%
rename from ui/app/components/ui/dialog/index.js
rename to ui/components/ui/dialog/index.js
diff --git a/ui/app/components/ui/dropdown/dropdown.js b/ui/components/ui/dropdown/dropdown.js
similarity index 100%
rename from ui/app/components/ui/dropdown/dropdown.js
rename to ui/components/ui/dropdown/dropdown.js
diff --git a/ui/app/components/ui/dropdown/dropdown.scss b/ui/components/ui/dropdown/dropdown.scss
similarity index 100%
rename from ui/app/components/ui/dropdown/dropdown.scss
rename to ui/components/ui/dropdown/dropdown.scss
diff --git a/ui/app/components/ui/dropdown/dropdown.stories.js b/ui/components/ui/dropdown/dropdown.stories.js
similarity index 100%
rename from ui/app/components/ui/dropdown/dropdown.stories.js
rename to ui/components/ui/dropdown/dropdown.stories.js
diff --git a/ui/app/components/ui/dropdown/index.js b/ui/components/ui/dropdown/index.js
similarity index 100%
rename from ui/app/components/ui/dropdown/index.js
rename to ui/components/ui/dropdown/index.js
diff --git a/ui/app/components/ui/editable-label/editable-label.js b/ui/components/ui/editable-label/editable-label.js
similarity index 100%
rename from ui/app/components/ui/editable-label/editable-label.js
rename to ui/components/ui/editable-label/editable-label.js
diff --git a/ui/app/components/ui/editable-label/index.js b/ui/components/ui/editable-label/index.js
similarity index 100%
rename from ui/app/components/ui/editable-label/index.js
rename to ui/components/ui/editable-label/index.js
diff --git a/ui/app/components/ui/editable-label/index.scss b/ui/components/ui/editable-label/index.scss
similarity index 100%
rename from ui/app/components/ui/editable-label/index.scss
rename to ui/components/ui/editable-label/index.scss
diff --git a/ui/app/components/ui/error-message/error-message.component.js b/ui/components/ui/error-message/error-message.component.js
similarity index 100%
rename from ui/app/components/ui/error-message/error-message.component.js
rename to ui/components/ui/error-message/error-message.component.js
diff --git a/ui/app/components/ui/error-message/error-message.component.test.js b/ui/components/ui/error-message/error-message.component.test.js
similarity index 100%
rename from ui/app/components/ui/error-message/error-message.component.test.js
rename to ui/components/ui/error-message/error-message.component.test.js
diff --git a/ui/app/components/ui/error-message/index.js b/ui/components/ui/error-message/index.js
similarity index 100%
rename from ui/app/components/ui/error-message/index.js
rename to ui/components/ui/error-message/index.js
diff --git a/ui/app/components/ui/error-message/index.scss b/ui/components/ui/error-message/index.scss
similarity index 100%
rename from ui/app/components/ui/error-message/index.scss
rename to ui/components/ui/error-message/index.scss
diff --git a/ui/app/components/ui/export-text-container/export-text-container.component.js b/ui/components/ui/export-text-container/export-text-container.component.js
similarity index 100%
rename from ui/app/components/ui/export-text-container/export-text-container.component.js
rename to ui/components/ui/export-text-container/export-text-container.component.js
diff --git a/ui/app/components/ui/export-text-container/index.js b/ui/components/ui/export-text-container/index.js
similarity index 100%
rename from ui/app/components/ui/export-text-container/index.js
rename to ui/components/ui/export-text-container/index.js
diff --git a/ui/app/components/ui/export-text-container/index.scss b/ui/components/ui/export-text-container/index.scss
similarity index 100%
rename from ui/app/components/ui/export-text-container/index.scss
rename to ui/components/ui/export-text-container/index.scss
diff --git a/ui/app/components/ui/hex-to-decimal/hex-to-decimal.component.js b/ui/components/ui/hex-to-decimal/hex-to-decimal.component.js
similarity index 100%
rename from ui/app/components/ui/hex-to-decimal/hex-to-decimal.component.js
rename to ui/components/ui/hex-to-decimal/hex-to-decimal.component.js
diff --git a/ui/app/components/ui/hex-to-decimal/hex-to-decimal.component.test.js b/ui/components/ui/hex-to-decimal/hex-to-decimal.component.test.js
similarity index 100%
rename from ui/app/components/ui/hex-to-decimal/hex-to-decimal.component.test.js
rename to ui/components/ui/hex-to-decimal/hex-to-decimal.component.test.js
diff --git a/ui/app/components/ui/hex-to-decimal/index.js b/ui/components/ui/hex-to-decimal/index.js
similarity index 100%
rename from ui/app/components/ui/hex-to-decimal/index.js
rename to ui/components/ui/hex-to-decimal/index.js
diff --git a/ui/app/components/ui/icon-border/icon-border.js b/ui/components/ui/icon-border/icon-border.js
similarity index 100%
rename from ui/app/components/ui/icon-border/icon-border.js
rename to ui/components/ui/icon-border/icon-border.js
diff --git a/ui/app/components/ui/icon-border/icon-border.scss b/ui/components/ui/icon-border/icon-border.scss
similarity index 100%
rename from ui/app/components/ui/icon-border/icon-border.scss
rename to ui/components/ui/icon-border/icon-border.scss
diff --git a/ui/app/components/ui/icon-border/index.js b/ui/components/ui/icon-border/index.js
similarity index 100%
rename from ui/app/components/ui/icon-border/index.js
rename to ui/components/ui/icon-border/index.js
diff --git a/ui/app/components/ui/icon-button/icon-button.js b/ui/components/ui/icon-button/icon-button.js
similarity index 100%
rename from ui/app/components/ui/icon-button/icon-button.js
rename to ui/components/ui/icon-button/icon-button.js
diff --git a/ui/app/components/ui/icon-button/icon-button.scss b/ui/components/ui/icon-button/icon-button.scss
similarity index 100%
rename from ui/app/components/ui/icon-button/icon-button.scss
rename to ui/components/ui/icon-button/icon-button.scss
diff --git a/ui/app/components/ui/icon-button/index.js b/ui/components/ui/icon-button/index.js
similarity index 100%
rename from ui/app/components/ui/icon-button/index.js
rename to ui/components/ui/icon-button/index.js
diff --git a/ui/app/components/ui/icon-with-fallback/icon-with-fallback.component.js b/ui/components/ui/icon-with-fallback/icon-with-fallback.component.js
similarity index 100%
rename from ui/app/components/ui/icon-with-fallback/icon-with-fallback.component.js
rename to ui/components/ui/icon-with-fallback/icon-with-fallback.component.js
diff --git a/ui/app/components/ui/icon-with-fallback/icon-with-fallback.scss b/ui/components/ui/icon-with-fallback/icon-with-fallback.scss
similarity index 100%
rename from ui/app/components/ui/icon-with-fallback/icon-with-fallback.scss
rename to ui/components/ui/icon-with-fallback/icon-with-fallback.scss
diff --git a/ui/app/components/ui/icon-with-fallback/index.js b/ui/components/ui/icon-with-fallback/index.js
similarity index 100%
rename from ui/app/components/ui/icon-with-fallback/index.js
rename to ui/components/ui/icon-with-fallback/index.js
diff --git a/ui/app/components/ui/icon-with-label/icon-with-label.js b/ui/components/ui/icon-with-label/icon-with-label.js
similarity index 100%
rename from ui/app/components/ui/icon-with-label/icon-with-label.js
rename to ui/components/ui/icon-with-label/icon-with-label.js
diff --git a/ui/app/components/ui/icon-with-label/index.js b/ui/components/ui/icon-with-label/index.js
similarity index 100%
rename from ui/app/components/ui/icon-with-label/index.js
rename to ui/components/ui/icon-with-label/index.js
diff --git a/ui/app/components/ui/icon-with-label/index.scss b/ui/components/ui/icon-with-label/index.scss
similarity index 100%
rename from ui/app/components/ui/icon-with-label/index.scss
rename to ui/components/ui/icon-with-label/index.scss
diff --git a/ui/app/components/ui/icon/approve-icon.component.js b/ui/components/ui/icon/approve-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/approve-icon.component.js
rename to ui/components/ui/icon/approve-icon.component.js
diff --git a/ui/app/components/ui/icon/copy-icon.component.js b/ui/components/ui/icon/copy-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/copy-icon.component.js
rename to ui/components/ui/icon/copy-icon.component.js
diff --git a/ui/app/components/ui/icon/icon.stories.js b/ui/components/ui/icon/icon.stories.js
similarity index 100%
rename from ui/app/components/ui/icon/icon.stories.js
rename to ui/components/ui/icon/icon.stories.js
diff --git a/ui/app/components/ui/icon/index.scss b/ui/components/ui/icon/index.scss
similarity index 100%
rename from ui/app/components/ui/icon/index.scss
rename to ui/components/ui/icon/index.scss
diff --git a/ui/app/components/ui/icon/info-icon-inverted.component.js b/ui/components/ui/icon/info-icon-inverted.component.js
similarity index 100%
rename from ui/app/components/ui/icon/info-icon-inverted.component.js
rename to ui/components/ui/icon/info-icon-inverted.component.js
diff --git a/ui/app/components/ui/icon/info-icon.component.js b/ui/components/ui/icon/info-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/info-icon.component.js
rename to ui/components/ui/icon/info-icon.component.js
diff --git a/ui/app/components/ui/icon/interaction-icon.component.js b/ui/components/ui/icon/interaction-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/interaction-icon.component.js
rename to ui/components/ui/icon/interaction-icon.component.js
diff --git a/ui/app/components/ui/icon/overview-buy-icon.component.js b/ui/components/ui/icon/overview-buy-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/overview-buy-icon.component.js
rename to ui/components/ui/icon/overview-buy-icon.component.js
diff --git a/ui/app/components/ui/icon/overview-send-icon.component.js b/ui/components/ui/icon/overview-send-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/overview-send-icon.component.js
rename to ui/components/ui/icon/overview-send-icon.component.js
diff --git a/ui/app/components/ui/icon/paper-airplane-icon.js b/ui/components/ui/icon/paper-airplane-icon.js
similarity index 100%
rename from ui/app/components/ui/icon/paper-airplane-icon.js
rename to ui/components/ui/icon/paper-airplane-icon.js
diff --git a/ui/app/components/ui/icon/preloader/index.js b/ui/components/ui/icon/preloader/index.js
similarity index 100%
rename from ui/app/components/ui/icon/preloader/index.js
rename to ui/components/ui/icon/preloader/index.js
diff --git a/ui/app/components/ui/icon/preloader/index.scss b/ui/components/ui/icon/preloader/index.scss
similarity index 100%
rename from ui/app/components/ui/icon/preloader/index.scss
rename to ui/components/ui/icon/preloader/index.scss
diff --git a/ui/app/components/ui/icon/preloader/preloader-icon.component.js b/ui/components/ui/icon/preloader/preloader-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/preloader/preloader-icon.component.js
rename to ui/components/ui/icon/preloader/preloader-icon.component.js
diff --git a/ui/app/components/ui/icon/receive-icon.component.js b/ui/components/ui/icon/receive-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/receive-icon.component.js
rename to ui/components/ui/icon/receive-icon.component.js
diff --git a/ui/app/components/ui/icon/send-icon.component.js b/ui/components/ui/icon/send-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/send-icon.component.js
rename to ui/components/ui/icon/send-icon.component.js
diff --git a/ui/app/components/ui/icon/sign-icon.component.js b/ui/components/ui/icon/sign-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/sign-icon.component.js
rename to ui/components/ui/icon/sign-icon.component.js
diff --git a/ui/app/components/ui/icon/sun-check-icon.component.js b/ui/components/ui/icon/sun-check-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/sun-check-icon.component.js
rename to ui/components/ui/icon/sun-check-icon.component.js
diff --git a/ui/app/components/ui/icon/swap-icon-for-list.component.js b/ui/components/ui/icon/swap-icon-for-list.component.js
similarity index 100%
rename from ui/app/components/ui/icon/swap-icon-for-list.component.js
rename to ui/components/ui/icon/swap-icon-for-list.component.js
diff --git a/ui/app/components/ui/icon/swap-icon.component.js b/ui/components/ui/icon/swap-icon.component.js
similarity index 100%
rename from ui/app/components/ui/icon/swap-icon.component.js
rename to ui/components/ui/icon/swap-icon.component.js
diff --git a/ui/app/components/ui/identicon/blockieIdenticon/blockieIdenticon.component.js b/ui/components/ui/identicon/blockieIdenticon/blockieIdenticon.component.js
similarity index 100%
rename from ui/app/components/ui/identicon/blockieIdenticon/blockieIdenticon.component.js
rename to ui/components/ui/identicon/blockieIdenticon/blockieIdenticon.component.js
diff --git a/ui/app/components/ui/identicon/blockieIdenticon/index.js b/ui/components/ui/identicon/blockieIdenticon/index.js
similarity index 100%
rename from ui/app/components/ui/identicon/blockieIdenticon/index.js
rename to ui/components/ui/identicon/blockieIdenticon/index.js
diff --git a/ui/app/components/ui/identicon/identicon.component.js b/ui/components/ui/identicon/identicon.component.js
similarity index 96%
rename from ui/app/components/ui/identicon/identicon.component.js
rename to ui/components/ui/identicon/identicon.component.js
index 64a03ea01..dd6eb5beb 100644
--- a/ui/app/components/ui/identicon/identicon.component.js
+++ b/ui/components/ui/identicon/identicon.component.js
@@ -2,7 +2,7 @@ import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import contractMap from '@metamask/contract-metadata';
-import { toChecksumHexAddress } from '../../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
import Jazzicon from '../jazzicon';
import BlockieIdenticon from './blockieIdenticon';
diff --git a/ui/app/components/ui/identicon/identicon.component.test.js b/ui/components/ui/identicon/identicon.component.test.js
similarity index 100%
rename from ui/app/components/ui/identicon/identicon.component.test.js
rename to ui/components/ui/identicon/identicon.component.test.js
diff --git a/ui/app/components/ui/identicon/identicon.container.js b/ui/components/ui/identicon/identicon.container.js
similarity index 100%
rename from ui/app/components/ui/identicon/identicon.container.js
rename to ui/components/ui/identicon/identicon.container.js
diff --git a/ui/app/components/ui/identicon/identicon.stories.js b/ui/components/ui/identicon/identicon.stories.js
similarity index 100%
rename from ui/app/components/ui/identicon/identicon.stories.js
rename to ui/components/ui/identicon/identicon.stories.js
diff --git a/ui/app/components/ui/identicon/index.js b/ui/components/ui/identicon/index.js
similarity index 100%
rename from ui/app/components/ui/identicon/index.js
rename to ui/components/ui/identicon/index.js
diff --git a/ui/app/components/ui/identicon/index.scss b/ui/components/ui/identicon/index.scss
similarity index 100%
rename from ui/app/components/ui/identicon/index.scss
rename to ui/components/ui/identicon/index.scss
diff --git a/ui/app/components/ui/info-tooltip/index.js b/ui/components/ui/info-tooltip/index.js
similarity index 100%
rename from ui/app/components/ui/info-tooltip/index.js
rename to ui/components/ui/info-tooltip/index.js
diff --git a/ui/app/components/ui/info-tooltip/index.scss b/ui/components/ui/info-tooltip/index.scss
similarity index 100%
rename from ui/app/components/ui/info-tooltip/index.scss
rename to ui/components/ui/info-tooltip/index.scss
diff --git a/ui/app/components/ui/info-tooltip/info-tooltip.js b/ui/components/ui/info-tooltip/info-tooltip.js
similarity index 100%
rename from ui/app/components/ui/info-tooltip/info-tooltip.js
rename to ui/components/ui/info-tooltip/info-tooltip.js
diff --git a/ui/app/components/ui/info-tooltip/info-tooltip.stories.js b/ui/components/ui/info-tooltip/info-tooltip.stories.js
similarity index 100%
rename from ui/app/components/ui/info-tooltip/info-tooltip.stories.js
rename to ui/components/ui/info-tooltip/info-tooltip.stories.js
diff --git a/ui/app/components/ui/jazzicon/index.js b/ui/components/ui/jazzicon/index.js
similarity index 100%
rename from ui/app/components/ui/jazzicon/index.js
rename to ui/components/ui/jazzicon/index.js
diff --git a/ui/app/components/ui/jazzicon/jazzicon.component.js b/ui/components/ui/jazzicon/jazzicon.component.js
similarity index 95%
rename from ui/app/components/ui/jazzicon/jazzicon.component.js
rename to ui/components/ui/jazzicon/jazzicon.component.js
index 5d1953009..b0a35cb6f 100644
--- a/ui/app/components/ui/jazzicon/jazzicon.component.js
+++ b/ui/components/ui/jazzicon/jazzicon.component.js
@@ -1,7 +1,7 @@
import React, { createRef, PureComponent } from 'react';
import PropTypes from 'prop-types';
import jazzicon from '@metamask/jazzicon';
-import iconFactoryGenerator from '../../../../lib/icon-factory';
+import iconFactoryGenerator from '../../../helpers/utils/icon-factory';
const iconFactory = iconFactoryGenerator(jazzicon);
diff --git a/ui/app/components/ui/list-item/index.js b/ui/components/ui/list-item/index.js
similarity index 100%
rename from ui/app/components/ui/list-item/index.js
rename to ui/components/ui/list-item/index.js
diff --git a/ui/app/components/ui/list-item/index.scss b/ui/components/ui/list-item/index.scss
similarity index 100%
rename from ui/app/components/ui/list-item/index.scss
rename to ui/components/ui/list-item/index.scss
diff --git a/ui/app/components/ui/list-item/list-item.component.js b/ui/components/ui/list-item/list-item.component.js
similarity index 100%
rename from ui/app/components/ui/list-item/list-item.component.js
rename to ui/components/ui/list-item/list-item.component.js
diff --git a/ui/app/components/ui/list-item/list-item.component.test.js b/ui/components/ui/list-item/list-item.component.test.js
similarity index 100%
rename from ui/app/components/ui/list-item/list-item.component.test.js
rename to ui/components/ui/list-item/list-item.component.test.js
diff --git a/ui/app/components/ui/list-item/list-item.stories.js b/ui/components/ui/list-item/list-item.stories.js
similarity index 100%
rename from ui/app/components/ui/list-item/list-item.stories.js
rename to ui/components/ui/list-item/list-item.stories.js
diff --git a/ui/app/components/ui/loading-indicator/index.js b/ui/components/ui/loading-indicator/index.js
similarity index 100%
rename from ui/app/components/ui/loading-indicator/index.js
rename to ui/components/ui/loading-indicator/index.js
diff --git a/ui/app/components/ui/loading-indicator/loading-indicator.js b/ui/components/ui/loading-indicator/loading-indicator.js
similarity index 100%
rename from ui/app/components/ui/loading-indicator/loading-indicator.js
rename to ui/components/ui/loading-indicator/loading-indicator.js
diff --git a/ui/app/components/ui/loading-indicator/loading-indicator.scss b/ui/components/ui/loading-indicator/loading-indicator.scss
similarity index 100%
rename from ui/app/components/ui/loading-indicator/loading-indicator.scss
rename to ui/components/ui/loading-indicator/loading-indicator.scss
diff --git a/ui/app/components/ui/loading-screen/index.js b/ui/components/ui/loading-screen/index.js
similarity index 100%
rename from ui/app/components/ui/loading-screen/index.js
rename to ui/components/ui/loading-screen/index.js
diff --git a/ui/app/components/ui/loading-screen/index.scss b/ui/components/ui/loading-screen/index.scss
similarity index 100%
rename from ui/app/components/ui/loading-screen/index.scss
rename to ui/components/ui/loading-screen/index.scss
diff --git a/ui/app/components/ui/loading-screen/loading-screen.component.js b/ui/components/ui/loading-screen/loading-screen.component.js
similarity index 100%
rename from ui/app/components/ui/loading-screen/loading-screen.component.js
rename to ui/components/ui/loading-screen/loading-screen.component.js
diff --git a/ui/app/components/ui/lock-icon/index.js b/ui/components/ui/lock-icon/index.js
similarity index 100%
rename from ui/app/components/ui/lock-icon/index.js
rename to ui/components/ui/lock-icon/index.js
diff --git a/ui/app/components/ui/lock-icon/lock-icon.component.js b/ui/components/ui/lock-icon/lock-icon.component.js
similarity index 100%
rename from ui/app/components/ui/lock-icon/lock-icon.component.js
rename to ui/components/ui/lock-icon/lock-icon.component.js
diff --git a/ui/app/components/ui/mascot/index.js b/ui/components/ui/mascot/index.js
similarity index 100%
rename from ui/app/components/ui/mascot/index.js
rename to ui/components/ui/mascot/index.js
diff --git a/ui/app/components/ui/mascot/mascot.component.js b/ui/components/ui/mascot/mascot.component.js
similarity index 100%
rename from ui/app/components/ui/mascot/mascot.component.js
rename to ui/components/ui/mascot/mascot.component.js
diff --git a/ui/app/components/ui/mascot/mascot.stories.js b/ui/components/ui/mascot/mascot.stories.js
similarity index 100%
rename from ui/app/components/ui/mascot/mascot.stories.js
rename to ui/components/ui/mascot/mascot.stories.js
diff --git a/ui/app/components/ui/menu/index.js b/ui/components/ui/menu/index.js
similarity index 100%
rename from ui/app/components/ui/menu/index.js
rename to ui/components/ui/menu/index.js
diff --git a/ui/app/components/ui/menu/menu-item.js b/ui/components/ui/menu/menu-item.js
similarity index 100%
rename from ui/app/components/ui/menu/menu-item.js
rename to ui/components/ui/menu/menu-item.js
diff --git a/ui/app/components/ui/menu/menu.js b/ui/components/ui/menu/menu.js
similarity index 100%
rename from ui/app/components/ui/menu/menu.js
rename to ui/components/ui/menu/menu.js
diff --git a/ui/app/components/ui/menu/menu.scss b/ui/components/ui/menu/menu.scss
similarity index 100%
rename from ui/app/components/ui/menu/menu.scss
rename to ui/components/ui/menu/menu.scss
diff --git a/ui/app/components/ui/menu/menu.stories.js b/ui/components/ui/menu/menu.stories.js
similarity index 100%
rename from ui/app/components/ui/menu/menu.stories.js
rename to ui/components/ui/menu/menu.stories.js
diff --git a/ui/app/components/ui/metafox-logo/index.js b/ui/components/ui/metafox-logo/index.js
similarity index 100%
rename from ui/app/components/ui/metafox-logo/index.js
rename to ui/components/ui/metafox-logo/index.js
diff --git a/ui/app/components/ui/metafox-logo/metafox-logo.component.js b/ui/components/ui/metafox-logo/metafox-logo.component.js
similarity index 100%
rename from ui/app/components/ui/metafox-logo/metafox-logo.component.js
rename to ui/components/ui/metafox-logo/metafox-logo.component.js
diff --git a/ui/app/components/ui/metafox-logo/metafox-logo.component.test.js b/ui/components/ui/metafox-logo/metafox-logo.component.test.js
similarity index 100%
rename from ui/app/components/ui/metafox-logo/metafox-logo.component.test.js
rename to ui/components/ui/metafox-logo/metafox-logo.component.test.js
diff --git a/ui/app/components/ui/page-container/index.js b/ui/components/ui/page-container/index.js
similarity index 100%
rename from ui/app/components/ui/page-container/index.js
rename to ui/components/ui/page-container/index.js
diff --git a/ui/app/components/ui/page-container/index.scss b/ui/components/ui/page-container/index.scss
similarity index 100%
rename from ui/app/components/ui/page-container/index.scss
rename to ui/components/ui/page-container/index.scss
diff --git a/ui/app/components/ui/page-container/page-container-content.component.js b/ui/components/ui/page-container/page-container-content.component.js
similarity index 100%
rename from ui/app/components/ui/page-container/page-container-content.component.js
rename to ui/components/ui/page-container/page-container-content.component.js
diff --git a/ui/app/components/ui/page-container/page-container-footer/index.js b/ui/components/ui/page-container/page-container-footer/index.js
similarity index 100%
rename from ui/app/components/ui/page-container/page-container-footer/index.js
rename to ui/components/ui/page-container/page-container-footer/index.js
diff --git a/ui/app/components/ui/page-container/page-container-footer/page-container-footer.component.js b/ui/components/ui/page-container/page-container-footer/page-container-footer.component.js
similarity index 100%
rename from ui/app/components/ui/page-container/page-container-footer/page-container-footer.component.js
rename to ui/components/ui/page-container/page-container-footer/page-container-footer.component.js
diff --git a/ui/app/components/ui/page-container/page-container-footer/page-container-footer.component.test.js b/ui/components/ui/page-container/page-container-footer/page-container-footer.component.test.js
similarity index 100%
rename from ui/app/components/ui/page-container/page-container-footer/page-container-footer.component.test.js
rename to ui/components/ui/page-container/page-container-footer/page-container-footer.component.test.js
diff --git a/ui/app/components/ui/page-container/page-container-header/index.js b/ui/components/ui/page-container/page-container-header/index.js
similarity index 100%
rename from ui/app/components/ui/page-container/page-container-header/index.js
rename to ui/components/ui/page-container/page-container-header/index.js
diff --git a/ui/app/components/ui/page-container/page-container-header/page-container-header.component.js b/ui/components/ui/page-container/page-container-header/page-container-header.component.js
similarity index 100%
rename from ui/app/components/ui/page-container/page-container-header/page-container-header.component.js
rename to ui/components/ui/page-container/page-container-header/page-container-header.component.js
diff --git a/ui/app/components/ui/page-container/page-container-header/page-container-header.component.test.js b/ui/components/ui/page-container/page-container-header/page-container-header.component.test.js
similarity index 100%
rename from ui/app/components/ui/page-container/page-container-header/page-container-header.component.test.js
rename to ui/components/ui/page-container/page-container-header/page-container-header.component.test.js
diff --git a/ui/app/components/ui/page-container/page-container.component.js b/ui/components/ui/page-container/page-container.component.js
similarity index 100%
rename from ui/app/components/ui/page-container/page-container.component.js
rename to ui/components/ui/page-container/page-container.component.js
diff --git a/ui/app/components/ui/popover/index.js b/ui/components/ui/popover/index.js
similarity index 100%
rename from ui/app/components/ui/popover/index.js
rename to ui/components/ui/popover/index.js
diff --git a/ui/app/components/ui/popover/index.scss b/ui/components/ui/popover/index.scss
similarity index 100%
rename from ui/app/components/ui/popover/index.scss
rename to ui/components/ui/popover/index.scss
diff --git a/ui/app/components/ui/popover/popover.component.js b/ui/components/ui/popover/popover.component.js
similarity index 100%
rename from ui/app/components/ui/popover/popover.component.js
rename to ui/components/ui/popover/popover.component.js
diff --git a/ui/app/components/ui/popover/popover.stories.js b/ui/components/ui/popover/popover.stories.js
similarity index 100%
rename from ui/app/components/ui/popover/popover.stories.js
rename to ui/components/ui/popover/popover.stories.js
diff --git a/ui/app/components/ui/pulse-loader/index.js b/ui/components/ui/pulse-loader/index.js
similarity index 100%
rename from ui/app/components/ui/pulse-loader/index.js
rename to ui/components/ui/pulse-loader/index.js
diff --git a/ui/app/components/ui/pulse-loader/index.scss b/ui/components/ui/pulse-loader/index.scss
similarity index 100%
rename from ui/app/components/ui/pulse-loader/index.scss
rename to ui/components/ui/pulse-loader/index.scss
diff --git a/ui/app/components/ui/pulse-loader/pulse-loader.js b/ui/components/ui/pulse-loader/pulse-loader.js
similarity index 100%
rename from ui/app/components/ui/pulse-loader/pulse-loader.js
rename to ui/components/ui/pulse-loader/pulse-loader.js
diff --git a/ui/app/components/ui/pulse-loader/pulse-loader.stories.js b/ui/components/ui/pulse-loader/pulse-loader.stories.js
similarity index 100%
rename from ui/app/components/ui/pulse-loader/pulse-loader.stories.js
rename to ui/components/ui/pulse-loader/pulse-loader.stories.js
diff --git a/ui/app/components/ui/qr-code/index.js b/ui/components/ui/qr-code/index.js
similarity index 100%
rename from ui/app/components/ui/qr-code/index.js
rename to ui/components/ui/qr-code/index.js
diff --git a/ui/app/components/ui/qr-code/index.scss b/ui/components/ui/qr-code/index.scss
similarity index 100%
rename from ui/app/components/ui/qr-code/index.scss
rename to ui/components/ui/qr-code/index.scss
diff --git a/ui/app/components/ui/qr-code/qr-code.js b/ui/components/ui/qr-code/qr-code.js
similarity index 95%
rename from ui/app/components/ui/qr-code/qr-code.js
rename to ui/components/ui/qr-code/qr-code.js
index ae43dc49b..db0eeed2c 100644
--- a/ui/app/components/ui/qr-code/qr-code.js
+++ b/ui/components/ui/qr-code/qr-code.js
@@ -4,7 +4,7 @@ import qrCode from 'qrcode-generator';
import { connect } from 'react-redux';
import { isHexPrefixed } from 'ethereumjs-util';
import ReadOnlyInput from '../readonly-input/readonly-input';
-import { toChecksumHexAddress } from '../../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
export default connect(mapStateToProps)(QrCodeView);
diff --git a/ui/app/components/ui/readonly-input/index.js b/ui/components/ui/readonly-input/index.js
similarity index 100%
rename from ui/app/components/ui/readonly-input/index.js
rename to ui/components/ui/readonly-input/index.js
diff --git a/ui/app/components/ui/readonly-input/index.scss b/ui/components/ui/readonly-input/index.scss
similarity index 100%
rename from ui/app/components/ui/readonly-input/index.scss
rename to ui/components/ui/readonly-input/index.scss
diff --git a/ui/app/components/ui/readonly-input/readonly-input.js b/ui/components/ui/readonly-input/readonly-input.js
similarity index 100%
rename from ui/app/components/ui/readonly-input/readonly-input.js
rename to ui/components/ui/readonly-input/readonly-input.js
diff --git a/ui/app/components/ui/search-icon/index.js b/ui/components/ui/search-icon/index.js
similarity index 100%
rename from ui/app/components/ui/search-icon/index.js
rename to ui/components/ui/search-icon/index.js
diff --git a/ui/app/components/ui/search-icon/search-icon.component.js b/ui/components/ui/search-icon/search-icon.component.js
similarity index 100%
rename from ui/app/components/ui/search-icon/search-icon.component.js
rename to ui/components/ui/search-icon/search-icon.component.js
diff --git a/ui/app/components/ui/sender-to-recipient/index.js b/ui/components/ui/sender-to-recipient/index.js
similarity index 100%
rename from ui/app/components/ui/sender-to-recipient/index.js
rename to ui/components/ui/sender-to-recipient/index.js
diff --git a/ui/app/components/ui/sender-to-recipient/index.scss b/ui/components/ui/sender-to-recipient/index.scss
similarity index 100%
rename from ui/app/components/ui/sender-to-recipient/index.scss
rename to ui/components/ui/sender-to-recipient/index.scss
diff --git a/ui/app/components/ui/sender-to-recipient/sender-to-recipient.component.js b/ui/components/ui/sender-to-recipient/sender-to-recipient.component.js
similarity index 98%
rename from ui/app/components/ui/sender-to-recipient/sender-to-recipient.component.js
rename to ui/components/ui/sender-to-recipient/sender-to-recipient.component.js
index 69db31e1d..30e42e46f 100644
--- a/ui/app/components/ui/sender-to-recipient/sender-to-recipient.component.js
+++ b/ui/components/ui/sender-to-recipient/sender-to-recipient.component.js
@@ -7,7 +7,7 @@ import Identicon from '../identicon';
import { shortenAddress } from '../../../helpers/utils/util';
import AccountMismatchWarning from '../account-mismatch-warning/account-mismatch-warning.component';
import { useI18nContext } from '../../../hooks/useI18nContext';
-import { toChecksumHexAddress } from '../../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
import {
DEFAULT_VARIANT,
CARDS_VARIANT,
diff --git a/ui/app/components/ui/sender-to-recipient/sender-to-recipient.constants.js b/ui/components/ui/sender-to-recipient/sender-to-recipient.constants.js
similarity index 100%
rename from ui/app/components/ui/sender-to-recipient/sender-to-recipient.constants.js
rename to ui/components/ui/sender-to-recipient/sender-to-recipient.constants.js
diff --git a/ui/app/components/ui/site-icon/index.js b/ui/components/ui/site-icon/index.js
similarity index 100%
rename from ui/app/components/ui/site-icon/index.js
rename to ui/components/ui/site-icon/index.js
diff --git a/ui/app/components/ui/site-icon/site-icon.js b/ui/components/ui/site-icon/site-icon.js
similarity index 100%
rename from ui/app/components/ui/site-icon/site-icon.js
rename to ui/components/ui/site-icon/site-icon.js
diff --git a/ui/app/components/ui/snackbar/index.js b/ui/components/ui/snackbar/index.js
similarity index 100%
rename from ui/app/components/ui/snackbar/index.js
rename to ui/components/ui/snackbar/index.js
diff --git a/ui/app/components/ui/snackbar/index.scss b/ui/components/ui/snackbar/index.scss
similarity index 100%
rename from ui/app/components/ui/snackbar/index.scss
rename to ui/components/ui/snackbar/index.scss
diff --git a/ui/app/components/ui/snackbar/snackbar.component.js b/ui/components/ui/snackbar/snackbar.component.js
similarity index 100%
rename from ui/app/components/ui/snackbar/snackbar.component.js
rename to ui/components/ui/snackbar/snackbar.component.js
diff --git a/ui/app/components/ui/spinner/index.js b/ui/components/ui/spinner/index.js
similarity index 100%
rename from ui/app/components/ui/spinner/index.js
rename to ui/components/ui/spinner/index.js
diff --git a/ui/app/components/ui/spinner/spinner.component.js b/ui/components/ui/spinner/spinner.component.js
similarity index 100%
rename from ui/app/components/ui/spinner/spinner.component.js
rename to ui/components/ui/spinner/spinner.component.js
diff --git a/ui/app/components/ui/tabs/index.js b/ui/components/ui/tabs/index.js
similarity index 100%
rename from ui/app/components/ui/tabs/index.js
rename to ui/components/ui/tabs/index.js
diff --git a/ui/app/components/ui/tabs/index.scss b/ui/components/ui/tabs/index.scss
similarity index 100%
rename from ui/app/components/ui/tabs/index.scss
rename to ui/components/ui/tabs/index.scss
diff --git a/ui/app/components/ui/tabs/tab/index.js b/ui/components/ui/tabs/tab/index.js
similarity index 100%
rename from ui/app/components/ui/tabs/tab/index.js
rename to ui/components/ui/tabs/tab/index.js
diff --git a/ui/app/components/ui/tabs/tab/index.scss b/ui/components/ui/tabs/tab/index.scss
similarity index 100%
rename from ui/app/components/ui/tabs/tab/index.scss
rename to ui/components/ui/tabs/tab/index.scss
diff --git a/ui/app/components/ui/tabs/tab/tab.component.js b/ui/components/ui/tabs/tab/tab.component.js
similarity index 100%
rename from ui/app/components/ui/tabs/tab/tab.component.js
rename to ui/components/ui/tabs/tab/tab.component.js
diff --git a/ui/app/components/ui/tabs/tabs.component.js b/ui/components/ui/tabs/tabs.component.js
similarity index 100%
rename from ui/app/components/ui/tabs/tabs.component.js
rename to ui/components/ui/tabs/tabs.component.js
diff --git a/ui/app/components/ui/tabs/tabs.stories.js b/ui/components/ui/tabs/tabs.stories.js
similarity index 100%
rename from ui/app/components/ui/tabs/tabs.stories.js
rename to ui/components/ui/tabs/tabs.stories.js
diff --git a/ui/app/components/ui/text-field/index.js b/ui/components/ui/text-field/index.js
similarity index 100%
rename from ui/app/components/ui/text-field/index.js
rename to ui/components/ui/text-field/index.js
diff --git a/ui/app/components/ui/text-field/text-field.component.js b/ui/components/ui/text-field/text-field.component.js
similarity index 100%
rename from ui/app/components/ui/text-field/text-field.component.js
rename to ui/components/ui/text-field/text-field.component.js
diff --git a/ui/app/components/ui/text-field/text-field.stories.js b/ui/components/ui/text-field/text-field.stories.js
similarity index 100%
rename from ui/app/components/ui/text-field/text-field.stories.js
rename to ui/components/ui/text-field/text-field.stories.js
diff --git a/ui/app/components/ui/toggle-button/index.js b/ui/components/ui/toggle-button/index.js
similarity index 100%
rename from ui/app/components/ui/toggle-button/index.js
rename to ui/components/ui/toggle-button/index.js
diff --git a/ui/app/components/ui/toggle-button/index.scss b/ui/components/ui/toggle-button/index.scss
similarity index 100%
rename from ui/app/components/ui/toggle-button/index.scss
rename to ui/components/ui/toggle-button/index.scss
diff --git a/ui/app/components/ui/toggle-button/toggle-button.component.js b/ui/components/ui/toggle-button/toggle-button.component.js
similarity index 100%
rename from ui/app/components/ui/toggle-button/toggle-button.component.js
rename to ui/components/ui/toggle-button/toggle-button.component.js
diff --git a/ui/app/components/ui/token-balance/index.js b/ui/components/ui/token-balance/index.js
similarity index 100%
rename from ui/app/components/ui/token-balance/index.js
rename to ui/components/ui/token-balance/index.js
diff --git a/ui/app/components/ui/token-balance/index.scss b/ui/components/ui/token-balance/index.scss
similarity index 100%
rename from ui/app/components/ui/token-balance/index.scss
rename to ui/components/ui/token-balance/index.scss
diff --git a/ui/app/components/ui/token-balance/token-balance.js b/ui/components/ui/token-balance/token-balance.js
similarity index 100%
rename from ui/app/components/ui/token-balance/token-balance.js
rename to ui/components/ui/token-balance/token-balance.js
diff --git a/ui/app/components/ui/token-currency-display/index.js b/ui/components/ui/token-currency-display/index.js
similarity index 100%
rename from ui/app/components/ui/token-currency-display/index.js
rename to ui/components/ui/token-currency-display/index.js
diff --git a/ui/app/components/ui/token-currency-display/token-currency-display.component.js b/ui/components/ui/token-currency-display/token-currency-display.component.js
similarity index 100%
rename from ui/app/components/ui/token-currency-display/token-currency-display.component.js
rename to ui/components/ui/token-currency-display/token-currency-display.component.js
diff --git a/ui/app/components/ui/token-input/index.js b/ui/components/ui/token-input/index.js
similarity index 100%
rename from ui/app/components/ui/token-input/index.js
rename to ui/components/ui/token-input/index.js
diff --git a/ui/app/components/ui/token-input/token-input.component.js b/ui/components/ui/token-input/token-input.component.js
similarity index 98%
rename from ui/app/components/ui/token-input/token-input.component.js
rename to ui/components/ui/token-input/token-input.component.js
index fe7001d4f..af11d86b5 100644
--- a/ui/app/components/ui/token-input/token-input.component.js
+++ b/ui/components/ui/token-input/token-input.component.js
@@ -8,7 +8,7 @@ import {
multiplyCurrencies,
} from '../../../helpers/utils/conversion-util';
import { ETH } from '../../../helpers/constants/common';
-import { addHexPrefix } from '../../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../../app/scripts/lib/util';
/**
* Component that allows user to enter token values as a number, and props receive a converted
diff --git a/ui/app/components/ui/token-input/token-input.component.test.js b/ui/components/ui/token-input/token-input.component.test.js
similarity index 100%
rename from ui/app/components/ui/token-input/token-input.component.test.js
rename to ui/components/ui/token-input/token-input.component.test.js
diff --git a/ui/app/components/ui/token-input/token-input.container.js b/ui/components/ui/token-input/token-input.container.js
similarity index 100%
rename from ui/app/components/ui/token-input/token-input.container.js
rename to ui/components/ui/token-input/token-input.container.js
diff --git a/ui/app/components/ui/tooltip/index.js b/ui/components/ui/tooltip/index.js
similarity index 100%
rename from ui/app/components/ui/tooltip/index.js
rename to ui/components/ui/tooltip/index.js
diff --git a/ui/app/components/ui/tooltip/index.scss b/ui/components/ui/tooltip/index.scss
similarity index 100%
rename from ui/app/components/ui/tooltip/index.scss
rename to ui/components/ui/tooltip/index.scss
diff --git a/ui/app/components/ui/tooltip/tooltip.js b/ui/components/ui/tooltip/tooltip.js
similarity index 100%
rename from ui/app/components/ui/tooltip/tooltip.js
rename to ui/components/ui/tooltip/tooltip.js
diff --git a/ui/app/components/ui/truncated-definition-list/index.js b/ui/components/ui/truncated-definition-list/index.js
similarity index 100%
rename from ui/app/components/ui/truncated-definition-list/index.js
rename to ui/components/ui/truncated-definition-list/index.js
diff --git a/ui/app/components/ui/truncated-definition-list/truncated-definition-list.js b/ui/components/ui/truncated-definition-list/truncated-definition-list.js
similarity index 100%
rename from ui/app/components/ui/truncated-definition-list/truncated-definition-list.js
rename to ui/components/ui/truncated-definition-list/truncated-definition-list.js
diff --git a/ui/app/components/ui/truncated-definition-list/truncated-definition-list.scss b/ui/components/ui/truncated-definition-list/truncated-definition-list.scss
similarity index 100%
rename from ui/app/components/ui/truncated-definition-list/truncated-definition-list.scss
rename to ui/components/ui/truncated-definition-list/truncated-definition-list.scss
diff --git a/ui/app/components/ui/truncated-definition-list/truncated-definition-list.stories.js b/ui/components/ui/truncated-definition-list/truncated-definition-list.stories.js
similarity index 100%
rename from ui/app/components/ui/truncated-definition-list/truncated-definition-list.stories.js
rename to ui/components/ui/truncated-definition-list/truncated-definition-list.stories.js
diff --git a/ui/app/components/ui/typography/index.js b/ui/components/ui/typography/index.js
similarity index 100%
rename from ui/app/components/ui/typography/index.js
rename to ui/components/ui/typography/index.js
diff --git a/ui/app/components/ui/typography/typography.js b/ui/components/ui/typography/typography.js
similarity index 100%
rename from ui/app/components/ui/typography/typography.js
rename to ui/components/ui/typography/typography.js
diff --git a/ui/app/components/ui/typography/typography.scss b/ui/components/ui/typography/typography.scss
similarity index 100%
rename from ui/app/components/ui/typography/typography.scss
rename to ui/components/ui/typography/typography.scss
diff --git a/ui/app/components/ui/typography/typography.stories.js b/ui/components/ui/typography/typography.stories.js
similarity index 100%
rename from ui/app/components/ui/typography/typography.stories.js
rename to ui/components/ui/typography/typography.stories.js
diff --git a/ui/app/components/ui/ui-components.scss b/ui/components/ui/ui-components.scss
similarity index 100%
rename from ui/app/components/ui/ui-components.scss
rename to ui/components/ui/ui-components.scss
diff --git a/ui/app/components/ui/unit-input/index.js b/ui/components/ui/unit-input/index.js
similarity index 100%
rename from ui/app/components/ui/unit-input/index.js
rename to ui/components/ui/unit-input/index.js
diff --git a/ui/app/components/ui/unit-input/index.scss b/ui/components/ui/unit-input/index.scss
similarity index 100%
rename from ui/app/components/ui/unit-input/index.scss
rename to ui/components/ui/unit-input/index.scss
diff --git a/ui/app/components/ui/unit-input/unit-input.component.js b/ui/components/ui/unit-input/unit-input.component.js
similarity index 100%
rename from ui/app/components/ui/unit-input/unit-input.component.js
rename to ui/components/ui/unit-input/unit-input.component.js
diff --git a/ui/app/components/ui/unit-input/unit-input.component.test.js b/ui/components/ui/unit-input/unit-input.component.test.js
similarity index 100%
rename from ui/app/components/ui/unit-input/unit-input.component.test.js
rename to ui/components/ui/unit-input/unit-input.component.test.js
diff --git a/ui/app/components/ui/url-icon/index.js b/ui/components/ui/url-icon/index.js
similarity index 100%
rename from ui/app/components/ui/url-icon/index.js
rename to ui/components/ui/url-icon/index.js
diff --git a/ui/app/components/ui/url-icon/index.scss b/ui/components/ui/url-icon/index.scss
similarity index 100%
rename from ui/app/components/ui/url-icon/index.scss
rename to ui/components/ui/url-icon/index.scss
diff --git a/ui/app/components/ui/url-icon/url-icon.js b/ui/components/ui/url-icon/url-icon.js
similarity index 100%
rename from ui/app/components/ui/url-icon/url-icon.js
rename to ui/components/ui/url-icon/url-icon.js
diff --git a/ui/app/contexts/i18n.js b/ui/contexts/i18n.js
similarity index 100%
rename from ui/app/contexts/i18n.js
rename to ui/contexts/i18n.js
diff --git a/ui/app/contexts/metametrics.js b/ui/contexts/metametrics.js
similarity index 98%
rename from ui/app/contexts/metametrics.js
rename to ui/contexts/metametrics.js
index 5940f1088..7a1cafd80 100644
--- a/ui/app/contexts/metametrics.js
+++ b/ui/contexts/metametrics.js
@@ -17,7 +17,7 @@ import {
} from '../selectors/selectors';
import { getSendToken } from '../selectors/send';
import { txDataSelector } from '../selectors/confirm-transaction';
-import { getEnvironmentType } from '../../../app/scripts/lib/util';
+import { getEnvironmentType } from '../../app/scripts/lib/util';
import { trackMetaMetricsEvent } from '../store/actions';
export const MetaMetricsContext = createContext(() => {
diff --git a/ui/app/contexts/metametrics.new.js b/ui/contexts/metametrics.new.js
similarity index 91%
rename from ui/app/contexts/metametrics.new.js
rename to ui/contexts/metametrics.new.js
index e46638c13..720fd6ed0 100644
--- a/ui/app/contexts/metametrics.new.js
+++ b/ui/contexts/metametrics.new.js
@@ -16,7 +16,7 @@ import { matchPath, useLocation, useRouteMatch } from 'react-router-dom';
import { captureException, captureMessage } from '@sentry/browser';
import { omit } from 'lodash';
-import { getEnvironmentType } from '../../../app/scripts/lib/util';
+import { getEnvironmentType } from '../../app/scripts/lib/util';
import { PATH_NAME_MAP } from '../helpers/constants/routes';
import { txDataSelector } from '../selectors';
@@ -24,10 +24,10 @@ import { trackMetaMetricsEvent, trackMetaMetricsPage } from '../store/actions';
// type imports
/**
- * @typedef {import('../../../shared/constants/metametrics').MetaMetricsEventPayload} MetaMetricsEventPayload
- * @typedef {import('../../../shared/constants/metametrics').MetaMetricsEventOptions} MetaMetricsEventOptions
- * @typedef {import('../../../shared/constants/metametrics').MetaMetricsPageObject} MetaMetricsPageObject
- * @typedef {import('../../../shared/constants/metametrics').MetaMetricsReferrerObject} MetaMetricsReferrerObject
+ * @typedef {import('../../shared/constants/metametrics').MetaMetricsEventPayload} MetaMetricsEventPayload
+ * @typedef {import('../../shared/constants/metametrics').MetaMetricsEventOptions} MetaMetricsEventOptions
+ * @typedef {import('../../shared/constants/metametrics').MetaMetricsPageObject} MetaMetricsPageObject
+ * @typedef {import('../../shared/constants/metametrics').MetaMetricsReferrerObject} MetaMetricsReferrerObject
*/
// types
diff --git a/ui/app/css/base-styles.scss b/ui/css/base-styles.scss
similarity index 78%
rename from ui/app/css/base-styles.scss
rename to ui/css/base-styles.scss
index 4c209ff55..14ffafefc 100644
--- a/ui/app/css/base-styles.scss
+++ b/ui/css/base-styles.scss
@@ -31,11 +31,11 @@ html {
/*
This error class is used in the following files still:
- /ui/app/pages/create-account/connect-hardware/index.js
- /ui/app/pages/create-account/import-account/json.js
- /ui/app/pages/create-account/import-account/private-key.js
- /ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.js
- /ui/app/pages/keychains/restore-vault.js
+ /ui/pages/create-account/connect-hardware/index.js
+ /ui/pages/create-account/import-account/json.js
+ /ui/pages/create-account/import-account/private-key.js
+ /ui/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.js
+ /ui/pages/keychains/restore-vault.js
*/
.error {
color: #f7861c;
@@ -45,8 +45,8 @@ html {
/*
This warning class is used in the following files still:
- /ui/app/pages/create-account/import-account/json.js
- /ui/app/pages/confirm-add-suggested-token/confirm-add-suggested-token.component.js
+ /ui/pages/create-account/import-account/json.js
+ /ui/pages/confirm-add-suggested-token/confirm-add-suggested-token.component.js
*/
.warning {
color: #ffae00;
diff --git a/ui/app/css/design-system/attributes.scss b/ui/css/design-system/attributes.scss
similarity index 100%
rename from ui/app/css/design-system/attributes.scss
rename to ui/css/design-system/attributes.scss
diff --git a/ui/app/css/design-system/breakpoints.scss b/ui/css/design-system/breakpoints.scss
similarity index 100%
rename from ui/app/css/design-system/breakpoints.scss
rename to ui/css/design-system/breakpoints.scss
diff --git a/ui/app/css/design-system/colors.scss b/ui/css/design-system/colors.scss
similarity index 100%
rename from ui/app/css/design-system/colors.scss
rename to ui/css/design-system/colors.scss
diff --git a/ui/app/css/design-system/deprecated-colors.scss b/ui/css/design-system/deprecated-colors.scss
similarity index 100%
rename from ui/app/css/design-system/deprecated-colors.scss
rename to ui/css/design-system/deprecated-colors.scss
diff --git a/ui/app/css/design-system/index.scss b/ui/css/design-system/index.scss
similarity index 100%
rename from ui/app/css/design-system/index.scss
rename to ui/css/design-system/index.scss
diff --git a/ui/app/css/design-system/typography.scss b/ui/css/design-system/typography.scss
similarity index 92%
rename from ui/app/css/design-system/typography.scss
rename to ui/css/design-system/typography.scss
index 707170c24..12b7d37ea 100644
--- a/ui/app/css/design-system/typography.scss
+++ b/ui/css/design-system/typography.scss
@@ -1,8 +1,8 @@
$fa-font-path: '/fonts/fontawesome';
-@import '../../../../node_modules/@fortawesome/fontawesome-free/scss/fontawesome';
-@import '../../../../node_modules/@fortawesome/fontawesome-free/scss/solid';
-@import '../../../../node_modules/@fortawesome/fontawesome-free/scss/regular';
+@import '../../../node_modules/@fortawesome/fontawesome-free/scss/fontawesome';
+@import '../../../node_modules/@fortawesome/fontawesome-free/scss/solid';
+@import '../../../node_modules/@fortawesome/fontawesome-free/scss/regular';
@font-face {
font-family: 'Roboto';
diff --git a/ui/app/css/design-system/z-index.scss b/ui/css/design-system/z-index.scss
similarity index 100%
rename from ui/app/css/design-system/z-index.scss
rename to ui/css/design-system/z-index.scss
diff --git a/ui/app/css/index.scss b/ui/css/index.scss
similarity index 93%
rename from ui/app/css/index.scss
rename to ui/css/index.scss
index aa2604242..fb0009d89 100644
--- a/ui/app/css/index.scss
+++ b/ui/css/index.scss
@@ -27,4 +27,4 @@
/*
Third Party Library Styles
*/
-@import '../../../node_modules/react-tippy/dist/tippy';
+@import '../../node_modules/react-tippy/dist/tippy';
diff --git a/ui/app/css/itcss/README.md b/ui/css/itcss/README.md
similarity index 100%
rename from ui/app/css/itcss/README.md
rename to ui/css/itcss/README.md
diff --git a/ui/app/css/itcss/components/index.scss b/ui/css/itcss/components/index.scss
similarity index 100%
rename from ui/app/css/itcss/components/index.scss
rename to ui/css/itcss/components/index.scss
diff --git a/ui/app/css/itcss/components/network.scss b/ui/css/itcss/components/network.scss
similarity index 100%
rename from ui/app/css/itcss/components/network.scss
rename to ui/css/itcss/components/network.scss
diff --git a/ui/app/css/itcss/components/newui-sections.scss b/ui/css/itcss/components/newui-sections.scss
similarity index 100%
rename from ui/app/css/itcss/components/newui-sections.scss
rename to ui/css/itcss/components/newui-sections.scss
diff --git a/ui/app/css/itcss/components/send.scss b/ui/css/itcss/components/send.scss
similarity index 100%
rename from ui/app/css/itcss/components/send.scss
rename to ui/css/itcss/components/send.scss
diff --git a/ui/app/css/itcss/settings/index.scss b/ui/css/itcss/settings/index.scss
similarity index 100%
rename from ui/app/css/itcss/settings/index.scss
rename to ui/css/itcss/settings/index.scss
diff --git a/ui/app/css/itcss/settings/variables.scss b/ui/css/itcss/settings/variables.scss
similarity index 100%
rename from ui/app/css/itcss/settings/variables.scss
rename to ui/css/itcss/settings/variables.scss
diff --git a/ui/app/css/itcss/tools/index.scss b/ui/css/itcss/tools/index.scss
similarity index 100%
rename from ui/app/css/itcss/tools/index.scss
rename to ui/css/itcss/tools/index.scss
diff --git a/ui/app/css/itcss/tools/utilities.scss b/ui/css/itcss/tools/utilities.scss
similarity index 100%
rename from ui/app/css/itcss/tools/utilities.scss
rename to ui/css/itcss/tools/utilities.scss
diff --git a/ui/app/css/reset.scss b/ui/css/reset.scss
similarity index 100%
rename from ui/app/css/reset.scss
rename to ui/css/reset.scss
diff --git a/ui/app/css/utilities/_colors.scss b/ui/css/utilities/_colors.scss
similarity index 100%
rename from ui/app/css/utilities/_colors.scss
rename to ui/css/utilities/_colors.scss
diff --git a/ui/app/css/utilities/_spacing.scss b/ui/css/utilities/_spacing.scss
similarity index 100%
rename from ui/app/css/utilities/_spacing.scss
rename to ui/css/utilities/_spacing.scss
diff --git a/ui/app/css/utilities/index.scss b/ui/css/utilities/index.scss
similarity index 100%
rename from ui/app/css/utilities/index.scss
rename to ui/css/utilities/index.scss
diff --git a/ui/app/ducks/alerts/enums.js b/ui/ducks/alerts/enums.js
similarity index 100%
rename from ui/app/ducks/alerts/enums.js
rename to ui/ducks/alerts/enums.js
diff --git a/ui/app/ducks/alerts/index.js b/ui/ducks/alerts/index.js
similarity index 100%
rename from ui/app/ducks/alerts/index.js
rename to ui/ducks/alerts/index.js
diff --git a/ui/app/ducks/alerts/invalid-custom-network.js b/ui/ducks/alerts/invalid-custom-network.js
similarity index 93%
rename from ui/app/ducks/alerts/invalid-custom-network.js
rename to ui/ducks/alerts/invalid-custom-network.js
index ab033ed46..da3bd2e54 100644
--- a/ui/app/ducks/alerts/invalid-custom-network.js
+++ b/ui/ducks/alerts/invalid-custom-network.js
@@ -1,6 +1,6 @@
import { createSlice } from '@reduxjs/toolkit';
-import { ALERT_TYPES } from '../../../../shared/constants/alerts';
+import { ALERT_TYPES } from '../../../shared/constants/alerts';
import { ALERT_STATE } from './enums';
// Constants
diff --git a/ui/app/ducks/alerts/unconnected-account.js b/ui/ducks/alerts/unconnected-account.js
similarity index 98%
rename from ui/app/ducks/alerts/unconnected-account.js
rename to ui/ducks/alerts/unconnected-account.js
index 2020def25..748389e18 100644
--- a/ui/app/ducks/alerts/unconnected-account.js
+++ b/ui/ducks/alerts/unconnected-account.js
@@ -1,7 +1,7 @@
import { createSlice } from '@reduxjs/toolkit';
import { captureException } from '@sentry/browser';
-import { ALERT_TYPES } from '../../../../shared/constants/alerts';
+import { ALERT_TYPES } from '../../../shared/constants/alerts';
import * as actionConstants from '../../store/actionConstants';
import {
addPermittedAccount,
diff --git a/ui/app/ducks/app/app.js b/ui/ducks/app/app.js
similarity index 100%
rename from ui/app/ducks/app/app.js
rename to ui/ducks/app/app.js
diff --git a/ui/app/ducks/app/app.test.js b/ui/ducks/app/app.test.js
similarity index 100%
rename from ui/app/ducks/app/app.test.js
rename to ui/ducks/app/app.test.js
diff --git a/ui/app/ducks/confirm-transaction/confirm-transaction.duck.js b/ui/ducks/confirm-transaction/confirm-transaction.duck.js
similarity index 100%
rename from ui/app/ducks/confirm-transaction/confirm-transaction.duck.js
rename to ui/ducks/confirm-transaction/confirm-transaction.duck.js
diff --git a/ui/app/ducks/confirm-transaction/confirm-transaction.duck.test.js b/ui/ducks/confirm-transaction/confirm-transaction.duck.test.js
similarity index 98%
rename from ui/app/ducks/confirm-transaction/confirm-transaction.duck.test.js
rename to ui/ducks/confirm-transaction/confirm-transaction.duck.test.js
index 75e580a60..8df65c35a 100644
--- a/ui/app/ducks/confirm-transaction/confirm-transaction.duck.test.js
+++ b/ui/ducks/confirm-transaction/confirm-transaction.duck.test.js
@@ -4,8 +4,8 @@ import sinon from 'sinon';
import {
ROPSTEN_CHAIN_ID,
ROPSTEN_NETWORK_ID,
-} from '../../../../shared/constants/network';
-import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction';
+} from '../../../shared/constants/network';
+import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import ConfirmTransactionReducer, * as actions from './confirm-transaction.duck';
diff --git a/ui/app/ducks/gas/gas-duck.test.js b/ui/ducks/gas/gas-duck.test.js
similarity index 99%
rename from ui/app/ducks/gas/gas-duck.test.js
rename to ui/ducks/gas/gas-duck.test.js
index e4e51beab..d4301f9b3 100644
--- a/ui/app/ducks/gas/gas-duck.test.js
+++ b/ui/ducks/gas/gas-duck.test.js
@@ -10,7 +10,7 @@ import GasReducer, {
fetchBasicGasEstimates,
} from './gas.duck';
-jest.mock('../../../lib/storage-helpers.js', () => ({
+jest.mock('../../helpers/utils/storage-helpers.js', () => ({
getStorageItem: jest.fn(),
setStorageItem: jest.fn(),
}));
diff --git a/ui/app/ducks/gas/gas.duck.js b/ui/ducks/gas/gas.duck.js
similarity index 98%
rename from ui/app/ducks/gas/gas.duck.js
rename to ui/ducks/gas/gas.duck.js
index 48d277443..863d726fa 100644
--- a/ui/app/ducks/gas/gas.duck.js
+++ b/ui/ducks/gas/gas.duck.js
@@ -1,6 +1,9 @@
import { cloneDeep } from 'lodash';
import BigNumber from 'bignumber.js';
-import { getStorageItem, setStorageItem } from '../../../lib/storage-helpers';
+import {
+ getStorageItem,
+ setStorageItem,
+} from '../../helpers/utils/storage-helpers';
import {
decGWEIToHexWEI,
getValueFromWeiHex,
diff --git a/ui/app/ducks/history/history.js b/ui/ducks/history/history.js
similarity index 100%
rename from ui/app/ducks/history/history.js
rename to ui/ducks/history/history.js
diff --git a/ui/app/ducks/index.js b/ui/ducks/index.js
similarity index 93%
rename from ui/app/ducks/index.js
rename to ui/ducks/index.js
index 4782acc48..bae560536 100644
--- a/ui/app/ducks/index.js
+++ b/ui/ducks/index.js
@@ -1,5 +1,5 @@
import { combineReducers } from 'redux';
-import { ALERT_TYPES } from '../../../shared/constants/alerts';
+import { ALERT_TYPES } from '../../shared/constants/alerts';
import metamaskReducer from './metamask/metamask';
import localeMessagesReducer from './locale/locale';
import sendReducer from './send/send.duck';
diff --git a/ui/app/ducks/locale/locale.js b/ui/ducks/locale/locale.js
similarity index 100%
rename from ui/app/ducks/locale/locale.js
rename to ui/ducks/locale/locale.js
diff --git a/ui/app/ducks/metamask/metamask.js b/ui/ducks/metamask/metamask.js
similarity index 98%
rename from ui/app/ducks/metamask/metamask.js
rename to ui/ducks/metamask/metamask.js
index 7569f0ccb..95edd2f60 100644
--- a/ui/app/ducks/metamask/metamask.js
+++ b/ui/ducks/metamask/metamask.js
@@ -1,6 +1,6 @@
import * as actionConstants from '../../store/actionConstants';
-import { ALERT_TYPES } from '../../../../shared/constants/alerts';
-import { NETWORK_TYPE_RPC } from '../../../../shared/constants/network';
+import { ALERT_TYPES } from '../../../shared/constants/alerts';
+import { NETWORK_TYPE_RPC } from '../../../shared/constants/network';
export default function reduceMetamask(state = {}, action) {
const metamaskState = {
diff --git a/ui/app/ducks/metamask/metamask.test.js b/ui/ducks/metamask/metamask.test.js
similarity index 100%
rename from ui/app/ducks/metamask/metamask.test.js
rename to ui/ducks/metamask/metamask.test.js
diff --git a/ui/app/ducks/send/send-duck.test.js b/ui/ducks/send/send-duck.test.js
similarity index 100%
rename from ui/app/ducks/send/send-duck.test.js
rename to ui/ducks/send/send-duck.test.js
diff --git a/ui/app/ducks/send/send.duck.js b/ui/ducks/send/send.duck.js
similarity index 100%
rename from ui/app/ducks/send/send.duck.js
rename to ui/ducks/send/send.duck.js
diff --git a/ui/app/ducks/swaps/swaps.js b/ui/ducks/swaps/swaps.js
similarity index 99%
rename from ui/app/ducks/swaps/swaps.js
rename to ui/ducks/swaps/swaps.js
index f33b06745..349e913c1 100644
--- a/ui/app/ducks/swaps/swaps.js
+++ b/ui/ducks/swaps/swaps.js
@@ -58,8 +58,8 @@ import {
QUOTES_NOT_AVAILABLE_ERROR,
SWAP_FAILED_ERROR,
SWAPS_FETCH_ORDER_CONFLICT,
-} from '../../../../shared/constants/swaps';
-import { TRANSACTION_TYPES } from '../../../../shared/constants/transaction';
+} from '../../../shared/constants/swaps';
+import { TRANSACTION_TYPES } from '../../../shared/constants/transaction';
const GAS_PRICES_LOADING_STATES = {
INITIAL: 'INITIAL',
diff --git a/ui/app/ducks/swaps/swaps.test.js b/ui/ducks/swaps/swaps.test.js
similarity index 98%
rename from ui/app/ducks/swaps/swaps.test.js
rename to ui/ducks/swaps/swaps.test.js
index 585571d0e..a94869267 100644
--- a/ui/app/ducks/swaps/swaps.test.js
+++ b/ui/ducks/swaps/swaps.test.js
@@ -1,7 +1,7 @@
import nock from 'nock';
import { setSwapsLiveness } from '../../store/actions';
-import { setStorageItem } from '../../../lib/storage-helpers';
+import { setStorageItem } from '../../helpers/utils/storage-helpers';
import * as swaps from './swaps';
jest.mock('../../store/actions.js', () => ({
diff --git a/ui/app/helpers/constants/available-conversions.json b/ui/helpers/constants/available-conversions.json
similarity index 100%
rename from ui/app/helpers/constants/available-conversions.json
rename to ui/helpers/constants/available-conversions.json
diff --git a/ui/app/helpers/constants/common.js b/ui/helpers/constants/common.js
similarity index 100%
rename from ui/app/helpers/constants/common.js
rename to ui/helpers/constants/common.js
diff --git a/ui/app/helpers/constants/connected-sites.js b/ui/helpers/constants/connected-sites.js
similarity index 100%
rename from ui/app/helpers/constants/connected-sites.js
rename to ui/helpers/constants/connected-sites.js
diff --git a/ui/app/helpers/constants/design-system.js b/ui/helpers/constants/design-system.js
similarity index 100%
rename from ui/app/helpers/constants/design-system.js
rename to ui/helpers/constants/design-system.js
diff --git a/ui/app/helpers/constants/error-keys.js b/ui/helpers/constants/error-keys.js
similarity index 100%
rename from ui/app/helpers/constants/error-keys.js
rename to ui/helpers/constants/error-keys.js
diff --git a/ui/app/helpers/constants/routes.js b/ui/helpers/constants/routes.js
similarity index 100%
rename from ui/app/helpers/constants/routes.js
rename to ui/helpers/constants/routes.js
diff --git a/ui/app/helpers/constants/transactions.js b/ui/helpers/constants/transactions.js
similarity index 91%
rename from ui/app/helpers/constants/transactions.js
rename to ui/helpers/constants/transactions.js
index 288d497e2..614f0329d 100644
--- a/ui/app/helpers/constants/transactions.js
+++ b/ui/helpers/constants/transactions.js
@@ -1,7 +1,7 @@
import {
TRANSACTION_TYPES,
TRANSACTION_STATUSES,
-} from '../../../../shared/constants/transaction';
+} from '../../../shared/constants/transaction';
export const PENDING_STATUS_HASH = {
[TRANSACTION_STATUSES.UNAPPROVED]: true,
diff --git a/ui/app/helpers/higher-order-components/authenticated/authenticated.component.js b/ui/helpers/higher-order-components/authenticated/authenticated.component.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/authenticated/authenticated.component.js
rename to ui/helpers/higher-order-components/authenticated/authenticated.component.js
diff --git a/ui/app/helpers/higher-order-components/authenticated/authenticated.container.js b/ui/helpers/higher-order-components/authenticated/authenticated.container.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/authenticated/authenticated.container.js
rename to ui/helpers/higher-order-components/authenticated/authenticated.container.js
diff --git a/ui/app/helpers/higher-order-components/authenticated/index.js b/ui/helpers/higher-order-components/authenticated/index.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/authenticated/index.js
rename to ui/helpers/higher-order-components/authenticated/index.js
diff --git a/ui/app/helpers/higher-order-components/feature-toggled-route.js b/ui/helpers/higher-order-components/feature-toggled-route.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/feature-toggled-route.js
rename to ui/helpers/higher-order-components/feature-toggled-route.js
diff --git a/ui/app/helpers/higher-order-components/initialized/index.js b/ui/helpers/higher-order-components/initialized/index.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/initialized/index.js
rename to ui/helpers/higher-order-components/initialized/index.js
diff --git a/ui/app/helpers/higher-order-components/initialized/initialized.component.js b/ui/helpers/higher-order-components/initialized/initialized.component.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/initialized/initialized.component.js
rename to ui/helpers/higher-order-components/initialized/initialized.component.js
diff --git a/ui/app/helpers/higher-order-components/initialized/initialized.container.js b/ui/helpers/higher-order-components/initialized/initialized.container.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/initialized/initialized.container.js
rename to ui/helpers/higher-order-components/initialized/initialized.container.js
diff --git a/ui/app/helpers/higher-order-components/with-modal-props/index.js b/ui/helpers/higher-order-components/with-modal-props/index.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/with-modal-props/index.js
rename to ui/helpers/higher-order-components/with-modal-props/index.js
diff --git a/ui/app/helpers/higher-order-components/with-modal-props/with-modal-props.js b/ui/helpers/higher-order-components/with-modal-props/with-modal-props.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/with-modal-props/with-modal-props.js
rename to ui/helpers/higher-order-components/with-modal-props/with-modal-props.js
diff --git a/ui/app/helpers/higher-order-components/with-modal-props/with-modal-props.test.js b/ui/helpers/higher-order-components/with-modal-props/with-modal-props.test.js
similarity index 100%
rename from ui/app/helpers/higher-order-components/with-modal-props/with-modal-props.test.js
rename to ui/helpers/higher-order-components/with-modal-props/with-modal-props.test.js
diff --git a/ui/lib/account-link.js b/ui/helpers/utils/account-link.js
similarity index 100%
rename from ui/lib/account-link.js
rename to ui/helpers/utils/account-link.js
diff --git a/ui/lib/account-link.test.js b/ui/helpers/utils/account-link.test.js
similarity index 97%
rename from ui/lib/account-link.test.js
rename to ui/helpers/utils/account-link.test.js
index 4e464309f..b5c430b87 100644
--- a/ui/lib/account-link.test.js
+++ b/ui/helpers/utils/account-link.test.js
@@ -1,7 +1,7 @@
import {
MAINNET_CHAIN_ID,
ROPSTEN_CHAIN_ID,
-} from '../../shared/constants/network';
+} from '../../../shared/constants/network';
import getAccountLink from './account-link';
describe('Account link', () => {
diff --git a/ui/app/helpers/utils/common.util.js b/ui/helpers/utils/common.util.js
similarity index 100%
rename from ui/app/helpers/utils/common.util.js
rename to ui/helpers/utils/common.util.js
diff --git a/ui/app/helpers/utils/common.util.test.js b/ui/helpers/utils/common.util.test.js
similarity index 100%
rename from ui/app/helpers/utils/common.util.test.js
rename to ui/helpers/utils/common.util.test.js
diff --git a/ui/app/helpers/utils/confirm-tx.util.js b/ui/helpers/utils/confirm-tx.util.js
similarity index 98%
rename from ui/app/helpers/utils/confirm-tx.util.js
rename to ui/helpers/utils/confirm-tx.util.js
index 80fe2f3df..5ae5d13c3 100644
--- a/ui/app/helpers/utils/confirm-tx.util.js
+++ b/ui/helpers/utils/confirm-tx.util.js
@@ -1,7 +1,7 @@
import currencyFormatter from 'currency-formatter';
import currencies from 'currency-formatter/currencies';
import BigNumber from 'bignumber.js';
-import { addHexPrefix } from '../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../app/scripts/lib/util';
import { unconfirmedTransactionsCountSelector } from '../../selectors';
import {
diff --git a/ui/app/helpers/utils/confirm-tx.util.test.js b/ui/helpers/utils/confirm-tx.util.test.js
similarity index 100%
rename from ui/app/helpers/utils/confirm-tx.util.test.js
rename to ui/helpers/utils/confirm-tx.util.test.js
diff --git a/ui/app/helpers/utils/conversion-util.js b/ui/helpers/utils/conversion-util.js
similarity index 100%
rename from ui/app/helpers/utils/conversion-util.js
rename to ui/helpers/utils/conversion-util.js
diff --git a/ui/app/helpers/utils/conversion-util.test.js b/ui/helpers/utils/conversion-util.test.js
similarity index 100%
rename from ui/app/helpers/utils/conversion-util.test.js
rename to ui/helpers/utils/conversion-util.test.js
diff --git a/ui/app/helpers/utils/conversions.util.js b/ui/helpers/utils/conversions.util.js
similarity index 98%
rename from ui/app/helpers/utils/conversions.util.js
rename to ui/helpers/utils/conversions.util.js
index ce4fe8c51..b7c901d97 100644
--- a/ui/app/helpers/utils/conversions.util.js
+++ b/ui/helpers/utils/conversions.util.js
@@ -1,5 +1,5 @@
import { ETH, GWEI, WEI } from '../constants/common';
-import { addHexPrefix } from '../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../app/scripts/lib/util';
import {
conversionUtil,
addCurrencies,
diff --git a/ui/app/helpers/utils/conversions.util.test.js b/ui/helpers/utils/conversions.util.test.js
similarity index 100%
rename from ui/app/helpers/utils/conversions.util.test.js
rename to ui/helpers/utils/conversions.util.test.js
diff --git a/ui/app/helpers/utils/fetch-with-cache.js b/ui/helpers/utils/fetch-with-cache.js
similarity index 90%
rename from ui/app/helpers/utils/fetch-with-cache.js
rename to ui/helpers/utils/fetch-with-cache.js
index 6dc377593..f810864cc 100644
--- a/ui/app/helpers/utils/fetch-with-cache.js
+++ b/ui/helpers/utils/fetch-with-cache.js
@@ -1,5 +1,5 @@
-import { getStorageItem, setStorageItem } from '../../../lib/storage-helpers';
-import getFetchWithTimeout from '../../../../shared/modules/fetch-with-timeout';
+import getFetchWithTimeout from '../../../shared/modules/fetch-with-timeout';
+import { getStorageItem, setStorageItem } from './storage-helpers';
const fetchWithCache = async (
url,
diff --git a/ui/app/helpers/utils/fetch-with-cache.test.js b/ui/helpers/utils/fetch-with-cache.test.js
similarity index 97%
rename from ui/app/helpers/utils/fetch-with-cache.test.js
rename to ui/helpers/utils/fetch-with-cache.test.js
index 76e295a77..7244e1d14 100644
--- a/ui/app/helpers/utils/fetch-with-cache.test.js
+++ b/ui/helpers/utils/fetch-with-cache.test.js
@@ -1,9 +1,9 @@
import nock from 'nock';
import sinon from 'sinon';
-import { getStorageItem, setStorageItem } from '../../../lib/storage-helpers';
+import { getStorageItem, setStorageItem } from './storage-helpers';
-jest.mock('../../../lib/storage-helpers.js', () => ({
+jest.mock('./storage-helpers.js', () => ({
getStorageItem: jest.fn(),
setStorageItem: jest.fn(),
}));
diff --git a/ui/app/helpers/utils/formatters.js b/ui/helpers/utils/formatters.js
similarity index 100%
rename from ui/app/helpers/utils/formatters.js
rename to ui/helpers/utils/formatters.js
diff --git a/ui/app/helpers/utils/i18n-helper.js b/ui/helpers/utils/i18n-helper.js
similarity index 97%
rename from ui/app/helpers/utils/i18n-helper.js
rename to ui/helpers/utils/i18n-helper.js
index ea2d7049f..611d1f665 100644
--- a/ui/app/helpers/utils/i18n-helper.js
+++ b/ui/helpers/utils/i18n-helper.js
@@ -3,7 +3,7 @@ import React from 'react';
import log from 'loglevel';
import * as Sentry from '@sentry/browser';
-import getFetchWithTimeout from '../../../../shared/modules/fetch-with-timeout';
+import getFetchWithTimeout from '../../../shared/modules/fetch-with-timeout';
const fetchWithTimeout = getFetchWithTimeout(30000);
diff --git a/ui/app/helpers/utils/i18n-helper.test.js b/ui/helpers/utils/i18n-helper.test.js
similarity index 100%
rename from ui/app/helpers/utils/i18n-helper.test.js
rename to ui/helpers/utils/i18n-helper.test.js
diff --git a/ui/lib/icon-factory.js b/ui/helpers/utils/icon-factory.js
similarity index 97%
rename from ui/lib/icon-factory.js
rename to ui/helpers/utils/icon-factory.js
index 132f5330d..5189dcfce 100644
--- a/ui/lib/icon-factory.js
+++ b/ui/helpers/utils/icon-factory.js
@@ -2,7 +2,7 @@ import contractMap from '@metamask/contract-metadata';
import {
isValidHexAddress,
toChecksumHexAddress,
-} from '../../shared/modules/hexstring-utils';
+} from '../../../shared/modules/hexstring-utils';
let iconFactory;
diff --git a/ui/lib/is-mobile-view.js b/ui/helpers/utils/is-mobile-view.js
similarity index 100%
rename from ui/lib/is-mobile-view.js
rename to ui/helpers/utils/is-mobile-view.js
diff --git a/ui/lib/storage-helpers.js b/ui/helpers/utils/storage-helpers.js
similarity index 100%
rename from ui/lib/storage-helpers.js
rename to ui/helpers/utils/storage-helpers.js
diff --git a/ui/app/helpers/utils/switch-direction.js b/ui/helpers/utils/switch-direction.js
similarity index 100%
rename from ui/app/helpers/utils/switch-direction.js
rename to ui/helpers/utils/switch-direction.js
diff --git a/ui/app/helpers/utils/token-util.js b/ui/helpers/utils/token-util.js
similarity index 100%
rename from ui/app/helpers/utils/token-util.js
rename to ui/helpers/utils/token-util.js
diff --git a/ui/app/helpers/utils/transactions.util.js b/ui/helpers/utils/transactions.util.js
similarity index 98%
rename from ui/app/helpers/utils/transactions.util.js
rename to ui/helpers/utils/transactions.util.js
index 99ce94fe5..21a33112a 100644
--- a/ui/app/helpers/utils/transactions.util.js
+++ b/ui/helpers/utils/transactions.util.js
@@ -3,12 +3,12 @@ import abi from 'human-standard-token-abi';
import { ethers } from 'ethers';
import log from 'loglevel';
-import { addHexPrefix } from '../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../app/scripts/lib/util';
import {
TRANSACTION_TYPES,
TRANSACTION_GROUP_STATUSES,
TRANSACTION_STATUSES,
-} from '../../../../shared/constants/transaction';
+} from '../../../shared/constants/transaction';
import fetchWithCache from './fetch-with-cache';
import { addCurrencies } from './conversion-util';
diff --git a/ui/app/helpers/utils/transactions.util.test.js b/ui/helpers/utils/transactions.util.test.js
similarity index 97%
rename from ui/app/helpers/utils/transactions.util.test.js
rename to ui/helpers/utils/transactions.util.test.js
index 9af77ef0f..a8663c3a6 100644
--- a/ui/app/helpers/utils/transactions.util.test.js
+++ b/ui/helpers/utils/transactions.util.test.js
@@ -2,7 +2,7 @@ import {
TRANSACTION_TYPES,
TRANSACTION_GROUP_STATUSES,
TRANSACTION_STATUSES,
-} from '../../../../shared/constants/transaction';
+} from '../../../shared/constants/transaction';
import * as utils from './transactions.util';
describe('Transactions utils', () => {
diff --git a/ui/lib/tx-helper.js b/ui/helpers/utils/tx-helper.js
similarity index 92%
rename from ui/lib/tx-helper.js
rename to ui/helpers/utils/tx-helper.js
index 7585b33fe..bdfc576e9 100644
--- a/ui/lib/tx-helper.js
+++ b/ui/helpers/utils/tx-helper.js
@@ -1,6 +1,6 @@
import log from 'loglevel';
-import { transactionMatchesNetwork } from '../../shared/modules/transaction.utils';
-import { valuesFor } from '../app/helpers/utils/util';
+import { transactionMatchesNetwork } from '../../../shared/modules/transaction.utils';
+import { valuesFor } from './util';
export default function txHelper(
unapprovedTxs,
diff --git a/ui/lib/tx-helper.test.js b/ui/helpers/utils/tx-helper.test.js
similarity index 92%
rename from ui/lib/tx-helper.test.js
rename to ui/helpers/utils/tx-helper.test.js
index 502da54af..75565a2d9 100644
--- a/ui/lib/tx-helper.test.js
+++ b/ui/helpers/utils/tx-helper.test.js
@@ -1,7 +1,7 @@
import {
MAINNET_CHAIN_ID,
MAINNET_NETWORK_ID,
-} from '../../shared/constants/network';
+} from '../../../shared/constants/network';
import txHelper from './tx-helper';
describe('txHelper', () => {
diff --git a/ui/app/helpers/utils/util.js b/ui/helpers/utils/util.js
similarity index 98%
rename from ui/app/helpers/utils/util.js
rename to ui/helpers/utils/util.js
index 512acaef8..23e49d716 100644
--- a/ui/app/helpers/utils/util.js
+++ b/ui/helpers/utils/util.js
@@ -3,7 +3,7 @@ import abi from 'human-standard-token-abi';
import BigNumber from 'bignumber.js';
import * as ethUtil from 'ethereumjs-util';
import { DateTime } from 'luxon';
-import { addHexPrefix } from '../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../app/scripts/lib/util';
import {
GOERLI_CHAIN_ID,
KOVAN_CHAIN_ID,
@@ -11,8 +11,8 @@ import {
MAINNET_CHAIN_ID,
RINKEBY_CHAIN_ID,
ROPSTEN_CHAIN_ID,
-} from '../../../../shared/constants/network';
-import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
+} from '../../../shared/constants/network';
+import { toChecksumHexAddress } from '../../../shared/modules/hexstring-utils';
// formatData :: ( date: ) -> String
export function formatDate(date, format = "M/d/y 'at' T") {
diff --git a/ui/app/helpers/utils/util.test.js b/ui/helpers/utils/util.test.js
similarity index 100%
rename from ui/app/helpers/utils/util.test.js
rename to ui/helpers/utils/util.test.js
diff --git a/ui/lib/webcam-utils.js b/ui/helpers/utils/webcam-utils.js
similarity index 90%
rename from ui/lib/webcam-utils.js
rename to ui/helpers/utils/webcam-utils.js
index 7dd4dd499..ef7e80160 100644
--- a/ui/lib/webcam-utils.js
+++ b/ui/helpers/utils/webcam-utils.js
@@ -4,8 +4,8 @@ import {
ENVIRONMENT_TYPE_POPUP,
PLATFORM_BRAVE,
PLATFORM_FIREFOX,
-} from '../../shared/constants/app';
-import { getEnvironmentType, getPlatform } from '../../app/scripts/lib/util';
+} from '../../../shared/constants/app';
+import { getEnvironmentType, getPlatform } from '../../../app/scripts/lib/util';
class WebcamUtils {
static async checkStatus() {
diff --git a/ui/app/hooks/useCancelTransaction.js b/ui/hooks/useCancelTransaction.js
similarity index 100%
rename from ui/app/hooks/useCancelTransaction.js
rename to ui/hooks/useCancelTransaction.js
diff --git a/ui/app/hooks/useCancelTransaction.test.js b/ui/hooks/useCancelTransaction.test.js
similarity index 98%
rename from ui/app/hooks/useCancelTransaction.test.js
rename to ui/hooks/useCancelTransaction.test.js
index 773f2dbb5..28453bc6c 100644
--- a/ui/app/hooks/useCancelTransaction.test.js
+++ b/ui/hooks/useCancelTransaction.test.js
@@ -1,7 +1,7 @@
import * as reactRedux from 'react-redux';
import { renderHook } from '@testing-library/react-hooks';
import sinon from 'sinon';
-import transactions from '../../../test/data/transaction-data.json';
+import transactions from '../../test/data/transaction-data.json';
import { getConversionRate, getSelectedAccount } from '../selectors';
import { showModal } from '../store/actions';
import { increaseLastGasPrice } from '../helpers/utils/confirm-tx.util';
diff --git a/ui/app/hooks/useCopyToClipboard.js b/ui/hooks/useCopyToClipboard.js
similarity index 100%
rename from ui/app/hooks/useCopyToClipboard.js
rename to ui/hooks/useCopyToClipboard.js
diff --git a/ui/app/hooks/useCurrencyDisplay.js b/ui/hooks/useCurrencyDisplay.js
similarity index 100%
rename from ui/app/hooks/useCurrencyDisplay.js
rename to ui/hooks/useCurrencyDisplay.js
diff --git a/ui/app/hooks/useCurrencyDisplay.test.js b/ui/hooks/useCurrencyDisplay.test.js
similarity index 100%
rename from ui/app/hooks/useCurrencyDisplay.test.js
rename to ui/hooks/useCurrencyDisplay.test.js
diff --git a/ui/app/hooks/useCurrentAsset.js b/ui/hooks/useCurrentAsset.js
similarity index 96%
rename from ui/app/hooks/useCurrentAsset.js
rename to ui/hooks/useCurrentAsset.js
index 832576a0c..068d076e7 100644
--- a/ui/app/hooks/useCurrentAsset.js
+++ b/ui/hooks/useCurrentAsset.js
@@ -6,7 +6,7 @@ import { ASSET_ROUTE } from '../helpers/constants/routes';
import {
SWAPS_CHAINID_DEFAULT_TOKEN_MAP,
ETH_SWAPS_TOKEN_OBJECT,
-} from '../../../shared/constants/swaps';
+} from '../../shared/constants/swaps';
/**
* Returns a token object for the asset that is currently being viewed.
diff --git a/ui/app/hooks/useEqualityCheck.js b/ui/hooks/useEqualityCheck.js
similarity index 100%
rename from ui/app/hooks/useEqualityCheck.js
rename to ui/hooks/useEqualityCheck.js
diff --git a/ui/app/hooks/useEthFiatAmount.js b/ui/hooks/useEthFiatAmount.js
similarity index 100%
rename from ui/app/hooks/useEthFiatAmount.js
rename to ui/hooks/useEthFiatAmount.js
diff --git a/ui/app/hooks/useI18nContext.js b/ui/hooks/useI18nContext.js
similarity index 100%
rename from ui/app/hooks/useI18nContext.js
rename to ui/hooks/useI18nContext.js
diff --git a/ui/app/hooks/useMethodData.js b/ui/hooks/useMethodData.js
similarity index 100%
rename from ui/app/hooks/useMethodData.js
rename to ui/hooks/useMethodData.js
diff --git a/ui/app/hooks/useMetricEvent.js b/ui/hooks/useMetricEvent.js
similarity index 92%
rename from ui/app/hooks/useMetricEvent.js
rename to ui/hooks/useMetricEvent.js
index b30b37eb5..9ca7834f1 100644
--- a/ui/app/hooks/useMetricEvent.js
+++ b/ui/hooks/useMetricEvent.js
@@ -6,7 +6,7 @@ import { useEqualityCheck } from './useEqualityCheck';
// Type imports
/**
* @typedef {import('../contexts/metametrics.new').UIMetricsEventPayload} UIMetricsEventPayload
- * @typedef {import('../../../shared/constants/metametrics').MetaMetricsEventOptions} MetaMetricsEventOptions
+ * @typedef {import('../../shared/constants/metametrics').MetaMetricsEventOptions} MetaMetricsEventOptions
*/
export function useMetricEvent(config = {}, overrides = {}) {
diff --git a/ui/app/hooks/useOriginMetadata.js b/ui/hooks/useOriginMetadata.js
similarity index 100%
rename from ui/app/hooks/useOriginMetadata.js
rename to ui/hooks/useOriginMetadata.js
diff --git a/ui/app/hooks/usePrevious.js b/ui/hooks/usePrevious.js
similarity index 100%
rename from ui/app/hooks/usePrevious.js
rename to ui/hooks/usePrevious.js
diff --git a/ui/app/hooks/useRetryTransaction.js b/ui/hooks/useRetryTransaction.js
similarity index 100%
rename from ui/app/hooks/useRetryTransaction.js
rename to ui/hooks/useRetryTransaction.js
diff --git a/ui/app/hooks/useRetryTransaction.test.js b/ui/hooks/useRetryTransaction.test.js
similarity index 97%
rename from ui/app/hooks/useRetryTransaction.test.js
rename to ui/hooks/useRetryTransaction.test.js
index c32d98174..da12dfdf2 100644
--- a/ui/app/hooks/useRetryTransaction.test.js
+++ b/ui/hooks/useRetryTransaction.test.js
@@ -1,7 +1,7 @@
import * as reactRedux from 'react-redux';
import { renderHook } from '@testing-library/react-hooks';
import sinon from 'sinon';
-import transactions from '../../../test/data/transaction-data.json';
+import transactions from '../../test/data/transaction-data.json';
import { showSidebar } from '../store/actions';
import * as methodDataHook from './useMethodData';
import * as metricEventHook from './useMetricEvent';
diff --git a/ui/app/hooks/useShouldShowSpeedUp.js b/ui/hooks/useShouldShowSpeedUp.js
similarity index 100%
rename from ui/app/hooks/useShouldShowSpeedUp.js
rename to ui/hooks/useShouldShowSpeedUp.js
diff --git a/ui/app/hooks/useSwappedTokenValue.js b/ui/hooks/useSwappedTokenValue.js
similarity index 96%
rename from ui/app/hooks/useSwappedTokenValue.js
rename to ui/hooks/useSwappedTokenValue.js
index 6eff3726f..02a2a1a37 100644
--- a/ui/app/hooks/useSwappedTokenValue.js
+++ b/ui/hooks/useSwappedTokenValue.js
@@ -1,9 +1,9 @@
import { useSelector } from 'react-redux';
-import { TRANSACTION_TYPES } from '../../../shared/constants/transaction';
+import { TRANSACTION_TYPES } from '../../shared/constants/transaction';
import {
isSwapsDefaultTokenAddress,
isSwapsDefaultTokenSymbol,
-} from '../../../shared/modules/swaps.utils';
+} from '../../shared/modules/swaps.utils';
import { getSwapsTokensReceivedFromTxMeta } from '../pages/swaps/swaps.util';
import { getCurrentChainId } from '../selectors';
import { useTokenFiatAmount } from './useTokenFiatAmount';
diff --git a/ui/app/hooks/useTimeout.js b/ui/hooks/useTimeout.js
similarity index 100%
rename from ui/app/hooks/useTimeout.js
rename to ui/hooks/useTimeout.js
diff --git a/ui/app/hooks/useTokenData.js b/ui/hooks/useTokenData.js
similarity index 100%
rename from ui/app/hooks/useTokenData.js
rename to ui/hooks/useTokenData.js
diff --git a/ui/app/hooks/useTokenData.test.js b/ui/hooks/useTokenData.test.js
similarity index 96%
rename from ui/app/hooks/useTokenData.test.js
rename to ui/hooks/useTokenData.test.js
index 7c5ed8572..1e80f5c9e 100644
--- a/ui/app/hooks/useTokenData.test.js
+++ b/ui/hooks/useTokenData.test.js
@@ -1,7 +1,7 @@
/* eslint-disable jest/no-conditional-expect */
import { ethers } from 'ethers';
import { renderHook } from '@testing-library/react-hooks';
-import { TRANSACTION_TYPES } from '../../../shared/constants/transaction';
+import { TRANSACTION_TYPES } from '../../shared/constants/transaction';
import { useTokenData } from './useTokenData';
const tests = [
diff --git a/ui/app/hooks/useTokenDisplayValue.js b/ui/hooks/useTokenDisplayValue.js
similarity index 100%
rename from ui/app/hooks/useTokenDisplayValue.js
rename to ui/hooks/useTokenDisplayValue.js
diff --git a/ui/app/hooks/useTokenDisplayValue.test.js b/ui/hooks/useTokenDisplayValue.test.js
similarity index 100%
rename from ui/app/hooks/useTokenDisplayValue.test.js
rename to ui/hooks/useTokenDisplayValue.test.js
diff --git a/ui/app/hooks/useTokenFiatAmount.js b/ui/hooks/useTokenFiatAmount.js
similarity index 100%
rename from ui/app/hooks/useTokenFiatAmount.js
rename to ui/hooks/useTokenFiatAmount.js
diff --git a/ui/app/hooks/useTokenTracker.js b/ui/hooks/useTokenTracker.js
similarity index 100%
rename from ui/app/hooks/useTokenTracker.js
rename to ui/hooks/useTokenTracker.js
diff --git a/ui/app/hooks/useTokensToSearch.js b/ui/hooks/useTokensToSearch.js
similarity index 96%
rename from ui/app/hooks/useTokensToSearch.js
rename to ui/hooks/useTokensToSearch.js
index e4bc6495e..371530630 100644
--- a/ui/app/hooks/useTokensToSearch.js
+++ b/ui/hooks/useTokensToSearch.js
@@ -12,8 +12,8 @@ import {
getCurrentChainId,
} from '../selectors';
import { getSwapsTokens } from '../ducks/swaps/swaps';
-import { isSwapsDefaultTokenSymbol } from '../../../shared/modules/swaps.utils';
-import { toChecksumHexAddress } from '../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../shared/modules/hexstring-utils';
+import { isSwapsDefaultTokenSymbol } from '../../shared/modules/swaps.utils';
import { useEqualityCheck } from './useEqualityCheck';
const tokenList = shuffle(
diff --git a/ui/app/hooks/useTransactionDisplayData.js b/ui/hooks/useTransactionDisplayData.js
similarity index 99%
rename from ui/app/hooks/useTransactionDisplayData.js
rename to ui/hooks/useTransactionDisplayData.js
index dc589f858..1fad5d2c7 100644
--- a/ui/app/hooks/useTransactionDisplayData.js
+++ b/ui/hooks/useTransactionDisplayData.js
@@ -22,7 +22,7 @@ import {
TRANSACTION_TYPES,
TRANSACTION_GROUP_CATEGORIES,
TRANSACTION_STATUSES,
-} from '../../../shared/constants/transaction';
+} from '../../shared/constants/transaction';
import { useI18nContext } from './useI18nContext';
import { useTokenFiatAmount } from './useTokenFiatAmount';
import { useUserPreferencedCurrency } from './useUserPreferencedCurrency';
diff --git a/ui/app/hooks/useTransactionDisplayData.test.js b/ui/hooks/useTransactionDisplayData.test.js
similarity index 97%
rename from ui/app/hooks/useTransactionDisplayData.test.js
rename to ui/hooks/useTransactionDisplayData.test.js
index aa0a9832d..e91566acf 100644
--- a/ui/app/hooks/useTransactionDisplayData.test.js
+++ b/ui/hooks/useTransactionDisplayData.test.js
@@ -3,7 +3,7 @@ import * as reactRedux from 'react-redux';
import { renderHook } from '@testing-library/react-hooks';
import sinon from 'sinon';
import { MemoryRouter } from 'react-router-dom';
-import transactions from '../../../test/data/transaction-data.json';
+import transactions from '../../test/data/transaction-data.json';
import {
getPreferences,
getShouldShowFiat,
@@ -13,14 +13,14 @@ import {
} from '../selectors';
import { getTokens } from '../ducks/metamask/metamask';
import { getMessage } from '../helpers/utils/i18n-helper';
-import messages from '../../../app/_locales/en/messages.json';
+import messages from '../../app/_locales/en/messages.json';
import { ASSET_ROUTE, DEFAULT_ROUTE } from '../helpers/constants/routes';
-import { MAINNET_CHAIN_ID } from '../../../shared/constants/network';
+import { MAINNET_CHAIN_ID } from '../../shared/constants/network';
import {
TRANSACTION_TYPES,
TRANSACTION_GROUP_CATEGORIES,
TRANSACTION_STATUSES,
-} from '../../../shared/constants/transaction';
+} from '../../shared/constants/transaction';
import * as i18nhooks from './useI18nContext';
import * as useTokenFiatAmountHooks from './useTokenFiatAmount';
import { useTransactionDisplayData } from './useTransactionDisplayData';
diff --git a/ui/app/hooks/useUserPreferencedCurrency.js b/ui/hooks/useUserPreferencedCurrency.js
similarity index 100%
rename from ui/app/hooks/useUserPreferencedCurrency.js
rename to ui/hooks/useUserPreferencedCurrency.js
diff --git a/ui/app/hooks/useUserPreferencedCurrency.test.js b/ui/hooks/useUserPreferencedCurrency.test.js
similarity index 100%
rename from ui/app/hooks/useUserPreferencedCurrency.test.js
rename to ui/hooks/useUserPreferencedCurrency.test.js
diff --git a/ui/index.js b/ui/index.js
index 16a8f5c7d..4bc8409b0 100644
--- a/ui/index.js
+++ b/ui/index.js
@@ -7,24 +7,24 @@ import { getEnvironmentType } from '../app/scripts/lib/util';
import { ALERT_TYPES } from '../shared/constants/alerts';
import { SENTRY_STATE } from '../app/scripts/lib/setupSentry';
import { ENVIRONMENT_TYPE_POPUP } from '../shared/constants/app';
-import Root from './app/pages';
-import * as actions from './app/store/actions';
-import configureStore from './app/store/store';
-import txHelper from './lib/tx-helper';
+import * as actions from './store/actions';
+import configureStore from './store/store';
import {
fetchLocale,
loadRelativeTimeFormatLocaleData,
-} from './app/helpers/utils/i18n-helper';
-import switchDirection from './app/helpers/utils/switch-direction';
+} from './helpers/utils/i18n-helper';
+import switchDirection from './helpers/utils/switch-direction';
import {
getPermittedAccountsForCurrentTab,
getSelectedAddress,
-} from './app/selectors';
-import { ALERT_STATE } from './app/ducks/alerts';
+} from './selectors';
+import { ALERT_STATE } from './ducks/alerts';
import {
getUnconnectedAccountAlertEnabledness,
getUnconnectedAccountAlertShown,
-} from './app/ducks/metamask/metamask';
+} from './ducks/metamask/metamask';
+import Root from './pages';
+import txHelper from './helpers/utils/tx-helper';
log.setLevel(global.METAMASK_DEBUG ? 'debug' : 'warn');
diff --git a/ui/lib/shallow-with-context.js b/ui/lib/shallow-with-context.js
deleted file mode 100644
index 9cfb1bd75..000000000
--- a/ui/lib/shallow-with-context.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import { shallow } from 'enzyme';
-
-export default function shallowWithContext(jsxComponent) {
- return shallow(jsxComponent, {
- context: { t: (str1, str2) => (str2 ? str1 + str2 : str1) },
- });
-}
diff --git a/ui/lib/test-timeout.js b/ui/lib/test-timeout.js
deleted file mode 100644
index 8c29780a1..000000000
--- a/ui/lib/test-timeout.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default function timeout(time) {
- return new Promise((resolve) => {
- setTimeout(resolve, time || 1500);
- });
-}
diff --git a/ui/app/pages/add-token/add-token.component.js b/ui/pages/add-token/add-token.component.js
similarity index 98%
rename from ui/app/pages/add-token/add-token.component.js
rename to ui/pages/add-token/add-token.component.js
index cceeea624..f5c7d2077 100644
--- a/ui/app/pages/add-token/add-token.component.js
+++ b/ui/pages/add-token/add-token.component.js
@@ -6,8 +6,8 @@ import { CONFIRM_ADD_TOKEN_ROUTE } from '../../helpers/constants/routes';
import TextField from '../../components/ui/text-field';
import PageContainer from '../../components/ui/page-container';
import { Tabs, Tab } from '../../components/ui/tabs';
-import { addHexPrefix } from '../../../../app/scripts/lib/util';
-import { isValidHexAddress } from '../../../../shared/modules/hexstring-utils';
+import { isValidHexAddress } from '../../../shared/modules/hexstring-utils';
+import { addHexPrefix } from '../../../app/scripts/lib/util';
import TokenList from './token-list';
import TokenSearch from './token-search';
diff --git a/ui/app/pages/add-token/add-token.container.js b/ui/pages/add-token/add-token.container.js
similarity index 100%
rename from ui/app/pages/add-token/add-token.container.js
rename to ui/pages/add-token/add-token.container.js
diff --git a/ui/app/pages/add-token/add-token.test.js b/ui/pages/add-token/add-token.test.js
similarity index 97%
rename from ui/app/pages/add-token/add-token.test.js
rename to ui/pages/add-token/add-token.test.js
index e91feafa7..b94e06b60 100644
--- a/ui/app/pages/add-token/add-token.test.js
+++ b/ui/pages/add-token/add-token.test.js
@@ -2,7 +2,7 @@ import React from 'react';
import { Provider } from 'react-redux';
import sinon from 'sinon';
import configureMockStore from 'redux-mock-store';
-import { mountWithRouter } from '../../../../test/lib/render-helpers';
+import { mountWithRouter } from '../../../test/lib/render-helpers';
import AddToken from './add-token.container';
describe('Add Token', () => {
diff --git a/ui/app/pages/add-token/index.js b/ui/pages/add-token/index.js
similarity index 100%
rename from ui/app/pages/add-token/index.js
rename to ui/pages/add-token/index.js
diff --git a/ui/app/pages/add-token/index.scss b/ui/pages/add-token/index.scss
similarity index 100%
rename from ui/app/pages/add-token/index.scss
rename to ui/pages/add-token/index.scss
diff --git a/ui/app/pages/add-token/token-list/index.js b/ui/pages/add-token/token-list/index.js
similarity index 100%
rename from ui/app/pages/add-token/token-list/index.js
rename to ui/pages/add-token/token-list/index.js
diff --git a/ui/app/pages/add-token/token-list/index.scss b/ui/pages/add-token/token-list/index.scss
similarity index 100%
rename from ui/app/pages/add-token/token-list/index.scss
rename to ui/pages/add-token/token-list/index.scss
diff --git a/ui/app/pages/add-token/token-list/token-list-placeholder/index.js b/ui/pages/add-token/token-list/token-list-placeholder/index.js
similarity index 100%
rename from ui/app/pages/add-token/token-list/token-list-placeholder/index.js
rename to ui/pages/add-token/token-list/token-list-placeholder/index.js
diff --git a/ui/app/pages/add-token/token-list/token-list-placeholder/index.scss b/ui/pages/add-token/token-list/token-list-placeholder/index.scss
similarity index 100%
rename from ui/app/pages/add-token/token-list/token-list-placeholder/index.scss
rename to ui/pages/add-token/token-list/token-list-placeholder/index.scss
diff --git a/ui/app/pages/add-token/token-list/token-list-placeholder/token-list-placeholder.component.js b/ui/pages/add-token/token-list/token-list-placeholder/token-list-placeholder.component.js
similarity index 100%
rename from ui/app/pages/add-token/token-list/token-list-placeholder/token-list-placeholder.component.js
rename to ui/pages/add-token/token-list/token-list-placeholder/token-list-placeholder.component.js
diff --git a/ui/app/pages/add-token/token-list/token-list.component.js b/ui/pages/add-token/token-list/token-list.component.js
similarity index 100%
rename from ui/app/pages/add-token/token-list/token-list.component.js
rename to ui/pages/add-token/token-list/token-list.component.js
diff --git a/ui/app/pages/add-token/token-list/token-list.container.js b/ui/pages/add-token/token-list/token-list.container.js
similarity index 100%
rename from ui/app/pages/add-token/token-list/token-list.container.js
rename to ui/pages/add-token/token-list/token-list.container.js
diff --git a/ui/app/pages/add-token/token-search/index.js b/ui/pages/add-token/token-search/index.js
similarity index 100%
rename from ui/app/pages/add-token/token-search/index.js
rename to ui/pages/add-token/token-search/index.js
diff --git a/ui/app/pages/add-token/token-search/token-search.component.js b/ui/pages/add-token/token-search/token-search.component.js
similarity index 100%
rename from ui/app/pages/add-token/token-search/token-search.component.js
rename to ui/pages/add-token/token-search/token-search.component.js
diff --git a/ui/app/pages/asset/asset.js b/ui/pages/asset/asset.js
similarity index 100%
rename from ui/app/pages/asset/asset.js
rename to ui/pages/asset/asset.js
diff --git a/ui/app/pages/asset/asset.scss b/ui/pages/asset/asset.scss
similarity index 100%
rename from ui/app/pages/asset/asset.scss
rename to ui/pages/asset/asset.scss
diff --git a/ui/app/pages/asset/components/asset-breadcrumb.js b/ui/pages/asset/components/asset-breadcrumb.js
similarity index 100%
rename from ui/app/pages/asset/components/asset-breadcrumb.js
rename to ui/pages/asset/components/asset-breadcrumb.js
diff --git a/ui/app/pages/asset/components/asset-navigation.js b/ui/pages/asset/components/asset-navigation.js
similarity index 100%
rename from ui/app/pages/asset/components/asset-navigation.js
rename to ui/pages/asset/components/asset-navigation.js
diff --git a/ui/app/pages/asset/components/asset-options.js b/ui/pages/asset/components/asset-options.js
similarity index 100%
rename from ui/app/pages/asset/components/asset-options.js
rename to ui/pages/asset/components/asset-options.js
diff --git a/ui/app/pages/asset/components/native-asset.js b/ui/pages/asset/components/native-asset.js
similarity index 96%
rename from ui/app/pages/asset/components/native-asset.js
rename to ui/pages/asset/components/native-asset.js
index f814c635a..cbb77aefd 100644
--- a/ui/app/pages/asset/components/native-asset.js
+++ b/ui/pages/asset/components/native-asset.js
@@ -11,7 +11,7 @@ import {
getSelectedAddress,
} from '../../../selectors/selectors';
import { showModal } from '../../../store/actions';
-import getAccountLink from '../../../../lib/account-link';
+import getAccountLink from '../../../helpers/utils/account-link';
import { DEFAULT_ROUTE } from '../../../helpers/constants/routes';
import AssetNavigation from './asset-navigation';
import AssetOptions from './asset-options';
diff --git a/ui/app/pages/asset/components/token-asset.js b/ui/pages/asset/components/token-asset.js
similarity index 100%
rename from ui/app/pages/asset/components/token-asset.js
rename to ui/pages/asset/components/token-asset.js
diff --git a/ui/app/pages/asset/index.js b/ui/pages/asset/index.js
similarity index 100%
rename from ui/app/pages/asset/index.js
rename to ui/pages/asset/index.js
diff --git a/ui/app/pages/confirm-add-suggested-token/confirm-add-suggested-token.component.js b/ui/pages/confirm-add-suggested-token/confirm-add-suggested-token.component.js
similarity index 97%
rename from ui/app/pages/confirm-add-suggested-token/confirm-add-suggested-token.component.js
rename to ui/pages/confirm-add-suggested-token/confirm-add-suggested-token.component.js
index 5c8c0e1d6..41d506644 100644
--- a/ui/app/pages/confirm-add-suggested-token/confirm-add-suggested-token.component.js
+++ b/ui/pages/confirm-add-suggested-token/confirm-add-suggested-token.component.js
@@ -3,8 +3,8 @@ import PropTypes from 'prop-types';
import Button from '../../components/ui/button';
import Identicon from '../../components/ui/identicon';
import TokenBalance from '../../components/ui/token-balance';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
-import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../shared/constants/app';
export default class ConfirmAddSuggestedToken extends Component {
static contextTypes = {
diff --git a/ui/app/pages/confirm-add-suggested-token/confirm-add-suggested-token.container.js b/ui/pages/confirm-add-suggested-token/confirm-add-suggested-token.container.js
similarity index 100%
rename from ui/app/pages/confirm-add-suggested-token/confirm-add-suggested-token.container.js
rename to ui/pages/confirm-add-suggested-token/confirm-add-suggested-token.container.js
diff --git a/ui/app/pages/confirm-add-suggested-token/index.js b/ui/pages/confirm-add-suggested-token/index.js
similarity index 100%
rename from ui/app/pages/confirm-add-suggested-token/index.js
rename to ui/pages/confirm-add-suggested-token/index.js
diff --git a/ui/app/pages/confirm-add-token/confirm-add-token.component.js b/ui/pages/confirm-add-token/confirm-add-token.component.js
similarity index 100%
rename from ui/app/pages/confirm-add-token/confirm-add-token.component.js
rename to ui/pages/confirm-add-token/confirm-add-token.component.js
diff --git a/ui/app/pages/confirm-add-token/confirm-add-token.container.js b/ui/pages/confirm-add-token/confirm-add-token.container.js
similarity index 100%
rename from ui/app/pages/confirm-add-token/confirm-add-token.container.js
rename to ui/pages/confirm-add-token/confirm-add-token.container.js
diff --git a/ui/app/pages/confirm-add-token/index.js b/ui/pages/confirm-add-token/index.js
similarity index 100%
rename from ui/app/pages/confirm-add-token/index.js
rename to ui/pages/confirm-add-token/index.js
diff --git a/ui/app/pages/confirm-add-token/index.scss b/ui/pages/confirm-add-token/index.scss
similarity index 100%
rename from ui/app/pages/confirm-add-token/index.scss
rename to ui/pages/confirm-add-token/index.scss
diff --git a/ui/app/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js b/ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js
similarity index 100%
rename from ui/app/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js
rename to ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js
diff --git a/ui/app/pages/confirm-approve/confirm-approve-content/index.js b/ui/pages/confirm-approve/confirm-approve-content/index.js
similarity index 100%
rename from ui/app/pages/confirm-approve/confirm-approve-content/index.js
rename to ui/pages/confirm-approve/confirm-approve-content/index.js
diff --git a/ui/app/pages/confirm-approve/confirm-approve-content/index.scss b/ui/pages/confirm-approve/confirm-approve-content/index.scss
similarity index 100%
rename from ui/app/pages/confirm-approve/confirm-approve-content/index.scss
rename to ui/pages/confirm-approve/confirm-approve-content/index.scss
diff --git a/ui/app/pages/confirm-approve/confirm-approve.js b/ui/pages/confirm-approve/confirm-approve.js
similarity index 100%
rename from ui/app/pages/confirm-approve/confirm-approve.js
rename to ui/pages/confirm-approve/confirm-approve.js
diff --git a/ui/app/pages/confirm-approve/confirm-approve.util.js b/ui/pages/confirm-approve/confirm-approve.util.js
similarity index 94%
rename from ui/app/pages/confirm-approve/confirm-approve.util.js
rename to ui/pages/confirm-approve/confirm-approve.util.js
index 3345b0966..240925611 100644
--- a/ui/app/pages/confirm-approve/confirm-approve.util.js
+++ b/ui/pages/confirm-approve/confirm-approve.util.js
@@ -1,4 +1,4 @@
-import { TRANSACTION_TYPES } from '../../../../shared/constants/transaction';
+import { TRANSACTION_TYPES } from '../../../shared/constants/transaction';
import { decimalToHex } from '../../helpers/utils/conversions.util';
import {
calcTokenValue,
diff --git a/ui/app/pages/confirm-approve/index.js b/ui/pages/confirm-approve/index.js
similarity index 100%
rename from ui/app/pages/confirm-approve/index.js
rename to ui/pages/confirm-approve/index.js
diff --git a/ui/app/pages/confirm-approve/index.scss b/ui/pages/confirm-approve/index.scss
similarity index 100%
rename from ui/app/pages/confirm-approve/index.scss
rename to ui/pages/confirm-approve/index.scss
diff --git a/ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.component.js b/ui/pages/confirm-decrypt-message/confirm-decrypt-message.component.js
similarity index 98%
rename from ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.component.js
rename to ui/pages/confirm-decrypt-message/confirm-decrypt-message.component.js
index 3ed8f67c2..ffbbccf19 100644
--- a/ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.component.js
+++ b/ui/pages/confirm-decrypt-message/confirm-decrypt-message.component.js
@@ -9,8 +9,8 @@ import Identicon from '../../components/ui/identicon';
import Tooltip from '../../components/ui/tooltip';
import Copy from '../../components/ui/icon/copy-icon.component';
-import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../shared/constants/app';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../shared/constants/app';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
import { conversionUtil } from '../../helpers/utils/conversion-util';
export default class ConfirmDecryptMessage extends Component {
diff --git a/ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.container.js b/ui/pages/confirm-decrypt-message/confirm-decrypt-message.container.js
similarity index 100%
rename from ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.container.js
rename to ui/pages/confirm-decrypt-message/confirm-decrypt-message.container.js
diff --git a/ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.scss b/ui/pages/confirm-decrypt-message/confirm-decrypt-message.scss
similarity index 100%
rename from ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.scss
rename to ui/pages/confirm-decrypt-message/confirm-decrypt-message.scss
diff --git a/ui/app/pages/confirm-decrypt-message/index.js b/ui/pages/confirm-decrypt-message/index.js
similarity index 100%
rename from ui/app/pages/confirm-decrypt-message/index.js
rename to ui/pages/confirm-decrypt-message/index.js
diff --git a/ui/app/pages/confirm-deploy-contract/confirm-deploy-contract.component.js b/ui/pages/confirm-deploy-contract/confirm-deploy-contract.component.js
similarity index 95%
rename from ui/app/pages/confirm-deploy-contract/confirm-deploy-contract.component.js
rename to ui/pages/confirm-deploy-contract/confirm-deploy-contract.component.js
index 231cd484a..63026bfaa 100644
--- a/ui/app/pages/confirm-deploy-contract/confirm-deploy-contract.component.js
+++ b/ui/pages/confirm-deploy-contract/confirm-deploy-contract.component.js
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import ConfirmTransactionBase from '../confirm-transaction-base';
-import { toBuffer } from '../../../../shared/modules/buffer-utils';
+import { toBuffer } from '../../../shared/modules/buffer-utils';
export default class ConfirmDeployContract extends Component {
static contextTypes = {
diff --git a/ui/app/pages/confirm-deploy-contract/confirm-deploy-contract.container.js b/ui/pages/confirm-deploy-contract/confirm-deploy-contract.container.js
similarity index 100%
rename from ui/app/pages/confirm-deploy-contract/confirm-deploy-contract.container.js
rename to ui/pages/confirm-deploy-contract/confirm-deploy-contract.container.js
diff --git a/ui/app/pages/confirm-deploy-contract/index.js b/ui/pages/confirm-deploy-contract/index.js
similarity index 100%
rename from ui/app/pages/confirm-deploy-contract/index.js
rename to ui/pages/confirm-deploy-contract/index.js
diff --git a/ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js b/ui/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js
similarity index 97%
rename from ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js
rename to ui/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js
index fb4100832..2382ea0bc 100644
--- a/ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js
+++ b/ui/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js
@@ -5,8 +5,8 @@ import AccountListItem from '../../components/app/account-list-item';
import Button from '../../components/ui/button';
import Identicon from '../../components/ui/identicon';
-import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../shared/constants/app';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../shared/constants/app';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
import { conversionUtil } from '../../helpers/utils/conversion-util';
export default class ConfirmEncryptionPublicKey extends Component {
diff --git a/ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.container.js b/ui/pages/confirm-encryption-public-key/confirm-encryption-public-key.container.js
similarity index 100%
rename from ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.container.js
rename to ui/pages/confirm-encryption-public-key/confirm-encryption-public-key.container.js
diff --git a/ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.scss b/ui/pages/confirm-encryption-public-key/confirm-encryption-public-key.scss
similarity index 100%
rename from ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.scss
rename to ui/pages/confirm-encryption-public-key/confirm-encryption-public-key.scss
diff --git a/ui/app/pages/confirm-encryption-public-key/index.js b/ui/pages/confirm-encryption-public-key/index.js
similarity index 100%
rename from ui/app/pages/confirm-encryption-public-key/index.js
rename to ui/pages/confirm-encryption-public-key/index.js
diff --git a/ui/app/pages/confirm-send-ether/confirm-send-ether.component.js b/ui/pages/confirm-send-ether/confirm-send-ether.component.js
similarity index 100%
rename from ui/app/pages/confirm-send-ether/confirm-send-ether.component.js
rename to ui/pages/confirm-send-ether/confirm-send-ether.component.js
diff --git a/ui/app/pages/confirm-send-ether/confirm-send-ether.container.js b/ui/pages/confirm-send-ether/confirm-send-ether.container.js
similarity index 100%
rename from ui/app/pages/confirm-send-ether/confirm-send-ether.container.js
rename to ui/pages/confirm-send-ether/confirm-send-ether.container.js
diff --git a/ui/app/pages/confirm-send-ether/index.js b/ui/pages/confirm-send-ether/index.js
similarity index 100%
rename from ui/app/pages/confirm-send-ether/index.js
rename to ui/pages/confirm-send-ether/index.js
diff --git a/ui/app/pages/confirm-send-token/confirm-send-token.component.js b/ui/pages/confirm-send-token/confirm-send-token.component.js
similarity index 100%
rename from ui/app/pages/confirm-send-token/confirm-send-token.component.js
rename to ui/pages/confirm-send-token/confirm-send-token.component.js
diff --git a/ui/app/pages/confirm-send-token/confirm-send-token.container.js b/ui/pages/confirm-send-token/confirm-send-token.container.js
similarity index 100%
rename from ui/app/pages/confirm-send-token/confirm-send-token.container.js
rename to ui/pages/confirm-send-token/confirm-send-token.container.js
diff --git a/ui/app/pages/confirm-send-token/index.js b/ui/pages/confirm-send-token/index.js
similarity index 100%
rename from ui/app/pages/confirm-send-token/index.js
rename to ui/pages/confirm-send-token/index.js
diff --git a/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js b/ui/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js
similarity index 100%
rename from ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js
rename to ui/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js
diff --git a/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.container.js b/ui/pages/confirm-token-transaction-base/confirm-token-transaction-base.container.js
similarity index 100%
rename from ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.container.js
rename to ui/pages/confirm-token-transaction-base/confirm-token-transaction-base.container.js
diff --git a/ui/app/pages/confirm-token-transaction-base/index.js b/ui/pages/confirm-token-transaction-base/index.js
similarity index 100%
rename from ui/app/pages/confirm-token-transaction-base/index.js
rename to ui/pages/confirm-token-transaction-base/index.js
diff --git a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js b/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js
similarity index 98%
rename from ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js
rename to ui/pages/confirm-transaction-base/confirm-transaction-base.component.js
index 0192ad75f..2408f872a 100644
--- a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js
+++ b/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
-import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../shared/constants/app';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../shared/constants/app';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
import ConfirmPageContainer, {
ConfirmDetailRow,
} from '../../components/app/confirm-page-container';
@@ -22,9 +22,9 @@ import TextField from '../../components/ui/text-field';
import {
TRANSACTION_TYPES,
TRANSACTION_STATUSES,
-} from '../../../../shared/constants/transaction';
+} from '../../../shared/constants/transaction';
import { getTransactionTypeTitle } from '../../helpers/utils/transactions.util';
-import { toBuffer } from '../../../../shared/modules/buffer-utils';
+import { toBuffer } from '../../../shared/modules/buffer-utils';
import ErrorMessage from '../../components/ui/error-message';
export default class ConfirmTransactionBase extends Component {
diff --git a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.test.js b/ui/pages/confirm-transaction-base/confirm-transaction-base.component.test.js
similarity index 100%
rename from ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.test.js
rename to ui/pages/confirm-transaction-base/confirm-transaction-base.component.test.js
diff --git a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.container.js b/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js
similarity index 98%
rename from ui/app/pages/confirm-transaction-base/confirm-transaction-base.container.js
rename to ui/pages/confirm-transaction-base/confirm-transaction-base.container.js
index a9a87219d..a043ee8d4 100644
--- a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.container.js
+++ b/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js
@@ -37,8 +37,8 @@ import {
getIsEthGasPriceFetched,
} from '../../selectors';
import { getMostRecentOverviewPage } from '../../ducks/history/history';
-import { transactionMatchesNetwork } from '../../../../shared/modules/transaction.utils';
-import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../shared/modules/hexstring-utils';
+import { transactionMatchesNetwork } from '../../../shared/modules/transaction.utils';
import ConfirmTransactionBase from './confirm-transaction-base.component';
const casedContractMap = Object.keys(contractMap).reduce((acc, base) => {
diff --git a/ui/app/pages/confirm-transaction-base/index.js b/ui/pages/confirm-transaction-base/index.js
similarity index 100%
rename from ui/app/pages/confirm-transaction-base/index.js
rename to ui/pages/confirm-transaction-base/index.js
diff --git a/ui/app/pages/confirm-transaction-switch/confirm-transaction-switch.component.js b/ui/pages/confirm-transaction-switch/confirm-transaction-switch.component.js
similarity index 95%
rename from ui/app/pages/confirm-transaction-switch/confirm-transaction-switch.component.js
rename to ui/pages/confirm-transaction-switch/confirm-transaction-switch.component.js
index 83aa7cdbc..6a708e54d 100644
--- a/ui/app/pages/confirm-transaction-switch/confirm-transaction-switch.component.js
+++ b/ui/pages/confirm-transaction-switch/confirm-transaction-switch.component.js
@@ -14,8 +14,8 @@ import {
DECRYPT_MESSAGE_REQUEST_PATH,
ENCRYPTION_PUBLIC_KEY_REQUEST_PATH,
} from '../../helpers/constants/routes';
-import { MESSAGE_TYPE } from '../../../../shared/constants/app';
-import { TRANSACTION_TYPES } from '../../../../shared/constants/transaction';
+import { MESSAGE_TYPE } from '../../../shared/constants/app';
+import { TRANSACTION_TYPES } from '../../../shared/constants/transaction';
export default class ConfirmTransactionSwitch extends Component {
static propTypes = {
diff --git a/ui/app/pages/confirm-transaction-switch/confirm-transaction-switch.container.js b/ui/pages/confirm-transaction-switch/confirm-transaction-switch.container.js
similarity index 100%
rename from ui/app/pages/confirm-transaction-switch/confirm-transaction-switch.container.js
rename to ui/pages/confirm-transaction-switch/confirm-transaction-switch.container.js
diff --git a/ui/app/pages/confirm-transaction-switch/index.js b/ui/pages/confirm-transaction-switch/index.js
similarity index 100%
rename from ui/app/pages/confirm-transaction-switch/index.js
rename to ui/pages/confirm-transaction-switch/index.js
diff --git a/ui/app/pages/confirm-transaction/conf-tx.js b/ui/pages/confirm-transaction/conf-tx.js
similarity index 97%
rename from ui/app/pages/confirm-transaction/conf-tx.js
rename to ui/pages/confirm-transaction/conf-tx.js
index ef8657424..23f6e2375 100644
--- a/ui/app/pages/confirm-transaction/conf-tx.js
+++ b/ui/pages/confirm-transaction/conf-tx.js
@@ -5,13 +5,13 @@ import { withRouter } from 'react-router-dom';
import { compose } from 'redux';
import log from 'loglevel';
import * as actions from '../../store/actions';
-import txHelper from '../../../lib/tx-helper';
+import txHelper from '../../helpers/utils/tx-helper';
import SignatureRequest from '../../components/app/signature-request';
import SignatureRequestOriginal from '../../components/app/signature-request-original';
import Loading from '../../components/ui/loading-screen';
import { getMostRecentOverviewPage } from '../../ducks/history/history';
-import { MESSAGE_TYPE } from '../../../../shared/constants/app';
-import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction';
+import { MESSAGE_TYPE } from '../../../shared/constants/app';
+import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
function mapStateToProps(state) {
const { metamask, appState } = state;
diff --git a/ui/app/pages/confirm-transaction/confirm-transaction.component.js b/ui/pages/confirm-transaction/confirm-transaction.component.js
similarity index 100%
rename from ui/app/pages/confirm-transaction/confirm-transaction.component.js
rename to ui/pages/confirm-transaction/confirm-transaction.component.js
diff --git a/ui/app/pages/confirm-transaction/confirm-transaction.container.js b/ui/pages/confirm-transaction/confirm-transaction.container.js
similarity index 100%
rename from ui/app/pages/confirm-transaction/confirm-transaction.container.js
rename to ui/pages/confirm-transaction/confirm-transaction.container.js
diff --git a/ui/app/pages/confirm-transaction/index.js b/ui/pages/confirm-transaction/index.js
similarity index 100%
rename from ui/app/pages/confirm-transaction/index.js
rename to ui/pages/confirm-transaction/index.js
diff --git a/ui/app/pages/confirmation/components/confirmation-footer/confirmation-footer.js b/ui/pages/confirmation/components/confirmation-footer/confirmation-footer.js
similarity index 100%
rename from ui/app/pages/confirmation/components/confirmation-footer/confirmation-footer.js
rename to ui/pages/confirmation/components/confirmation-footer/confirmation-footer.js
diff --git a/ui/app/pages/confirmation/components/confirmation-footer/confirmation-footer.scss b/ui/pages/confirmation/components/confirmation-footer/confirmation-footer.scss
similarity index 100%
rename from ui/app/pages/confirmation/components/confirmation-footer/confirmation-footer.scss
rename to ui/pages/confirmation/components/confirmation-footer/confirmation-footer.scss
diff --git a/ui/app/pages/confirmation/components/confirmation-footer/index.js b/ui/pages/confirmation/components/confirmation-footer/index.js
similarity index 100%
rename from ui/app/pages/confirmation/components/confirmation-footer/index.js
rename to ui/pages/confirmation/components/confirmation-footer/index.js
diff --git a/ui/app/pages/confirmation/confirmation.js b/ui/pages/confirmation/confirmation.js
similarity index 100%
rename from ui/app/pages/confirmation/confirmation.js
rename to ui/pages/confirmation/confirmation.js
diff --git a/ui/app/pages/confirmation/confirmation.scss b/ui/pages/confirmation/confirmation.scss
similarity index 100%
rename from ui/app/pages/confirmation/confirmation.scss
rename to ui/pages/confirmation/confirmation.scss
diff --git a/ui/app/pages/confirmation/index.js b/ui/pages/confirmation/index.js
similarity index 100%
rename from ui/app/pages/confirmation/index.js
rename to ui/pages/confirmation/index.js
diff --git a/ui/app/pages/confirmation/templates/add-ethereum-chain.js b/ui/pages/confirmation/templates/add-ethereum-chain.js
similarity index 100%
rename from ui/app/pages/confirmation/templates/add-ethereum-chain.js
rename to ui/pages/confirmation/templates/add-ethereum-chain.js
diff --git a/ui/app/pages/confirmation/templates/index.js b/ui/pages/confirmation/templates/index.js
similarity index 98%
rename from ui/app/pages/confirmation/templates/index.js
rename to ui/pages/confirmation/templates/index.js
index 3c90a68fd..a4e873735 100644
--- a/ui/app/pages/confirmation/templates/index.js
+++ b/ui/pages/confirmation/templates/index.js
@@ -1,5 +1,5 @@
import { omit, pick } from 'lodash';
-import { MESSAGE_TYPE } from '../../../../../shared/constants/app';
+import { MESSAGE_TYPE } from '../../../../shared/constants/app';
import {
rejectPendingApproval,
resolvePendingApproval,
diff --git a/ui/app/pages/confirmation/templates/switch-ethereum-chain.js b/ui/pages/confirmation/templates/switch-ethereum-chain.js
similarity index 96%
rename from ui/app/pages/confirmation/templates/switch-ethereum-chain.js
rename to ui/pages/confirmation/templates/switch-ethereum-chain.js
index 4dc351027..23f255bc6 100644
--- a/ui/app/pages/confirmation/templates/switch-ethereum-chain.js
+++ b/ui/pages/confirmation/templates/switch-ethereum-chain.js
@@ -1,5 +1,5 @@
import { ethErrors } from 'eth-rpc-errors';
-import { NETWORK_TYPE_RPC } from '../../../../../shared/constants/network';
+import { NETWORK_TYPE_RPC } from '../../../../shared/constants/network';
import {
JUSTIFY_CONTENT,
SEVERITIES,
diff --git a/ui/app/pages/connected-accounts/connected-accounts.component.js b/ui/pages/connected-accounts/connected-accounts.component.js
similarity index 100%
rename from ui/app/pages/connected-accounts/connected-accounts.component.js
rename to ui/pages/connected-accounts/connected-accounts.component.js
diff --git a/ui/app/pages/connected-accounts/connected-accounts.container.js b/ui/pages/connected-accounts/connected-accounts.container.js
similarity index 100%
rename from ui/app/pages/connected-accounts/connected-accounts.container.js
rename to ui/pages/connected-accounts/connected-accounts.container.js
diff --git a/ui/app/pages/connected-accounts/index.js b/ui/pages/connected-accounts/index.js
similarity index 100%
rename from ui/app/pages/connected-accounts/index.js
rename to ui/pages/connected-accounts/index.js
diff --git a/ui/app/pages/connected-accounts/index.scss b/ui/pages/connected-accounts/index.scss
similarity index 100%
rename from ui/app/pages/connected-accounts/index.scss
rename to ui/pages/connected-accounts/index.scss
diff --git a/ui/app/pages/connected-sites/connected-sites.component.js b/ui/pages/connected-sites/connected-sites.component.js
similarity index 100%
rename from ui/app/pages/connected-sites/connected-sites.component.js
rename to ui/pages/connected-sites/connected-sites.component.js
diff --git a/ui/app/pages/connected-sites/connected-sites.container.js b/ui/pages/connected-sites/connected-sites.container.js
similarity index 100%
rename from ui/app/pages/connected-sites/connected-sites.container.js
rename to ui/pages/connected-sites/connected-sites.container.js
diff --git a/ui/app/pages/connected-sites/index.js b/ui/pages/connected-sites/index.js
similarity index 100%
rename from ui/app/pages/connected-sites/index.js
rename to ui/pages/connected-sites/index.js
diff --git a/ui/app/pages/connected-sites/index.scss b/ui/pages/connected-sites/index.scss
similarity index 100%
rename from ui/app/pages/connected-sites/index.scss
rename to ui/pages/connected-sites/index.scss
diff --git a/ui/app/pages/create-account/connect-hardware/account-list.js b/ui/pages/create-account/connect-hardware/account-list.js
similarity index 99%
rename from ui/app/pages/create-account/connect-hardware/account-list.js
rename to ui/pages/create-account/connect-hardware/account-list.js
index 7449b0f19..ae3b43437 100644
--- a/ui/app/pages/create-account/connect-hardware/account-list.js
+++ b/ui/pages/create-account/connect-hardware/account-list.js
@@ -1,6 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
-import getAccountLink from '../../../../lib/account-link';
+import getAccountLink from '../../../helpers/utils/account-link';
import Button from '../../../components/ui/button';
import Checkbox from '../../../components/ui/check-box';
import Dropdown from '../../../components/ui/dropdown';
diff --git a/ui/app/pages/create-account/connect-hardware/index.js b/ui/pages/create-account/connect-hardware/index.js
similarity index 100%
rename from ui/app/pages/create-account/connect-hardware/index.js
rename to ui/pages/create-account/connect-hardware/index.js
diff --git a/ui/app/pages/create-account/connect-hardware/index.scss b/ui/pages/create-account/connect-hardware/index.scss
similarity index 100%
rename from ui/app/pages/create-account/connect-hardware/index.scss
rename to ui/pages/create-account/connect-hardware/index.scss
diff --git a/ui/app/pages/create-account/connect-hardware/select-hardware.js b/ui/pages/create-account/connect-hardware/select-hardware.js
similarity index 100%
rename from ui/app/pages/create-account/connect-hardware/select-hardware.js
rename to ui/pages/create-account/connect-hardware/select-hardware.js
diff --git a/ui/app/pages/create-account/create-account.component.js b/ui/pages/create-account/create-account.component.js
similarity index 100%
rename from ui/app/pages/create-account/create-account.component.js
rename to ui/pages/create-account/create-account.component.js
diff --git a/ui/app/pages/create-account/import-account/index.js b/ui/pages/create-account/import-account/index.js
similarity index 100%
rename from ui/app/pages/create-account/import-account/index.js
rename to ui/pages/create-account/import-account/index.js
diff --git a/ui/app/pages/create-account/import-account/index.scss b/ui/pages/create-account/import-account/index.scss
similarity index 100%
rename from ui/app/pages/create-account/import-account/index.scss
rename to ui/pages/create-account/import-account/index.scss
diff --git a/ui/app/pages/create-account/import-account/json.js b/ui/pages/create-account/import-account/json.js
similarity index 100%
rename from ui/app/pages/create-account/import-account/json.js
rename to ui/pages/create-account/import-account/json.js
diff --git a/ui/app/pages/create-account/import-account/private-key.js b/ui/pages/create-account/import-account/private-key.js
similarity index 100%
rename from ui/app/pages/create-account/import-account/private-key.js
rename to ui/pages/create-account/import-account/private-key.js
diff --git a/ui/app/pages/create-account/index.js b/ui/pages/create-account/index.js
similarity index 100%
rename from ui/app/pages/create-account/index.js
rename to ui/pages/create-account/index.js
diff --git a/ui/app/pages/create-account/index.scss b/ui/pages/create-account/index.scss
similarity index 100%
rename from ui/app/pages/create-account/index.scss
rename to ui/pages/create-account/index.scss
diff --git a/ui/app/pages/create-account/new-account.component.js b/ui/pages/create-account/new-account.component.js
similarity index 100%
rename from ui/app/pages/create-account/new-account.component.js
rename to ui/pages/create-account/new-account.component.js
diff --git a/ui/app/pages/create-account/new-account.container.js b/ui/pages/create-account/new-account.container.js
similarity index 100%
rename from ui/app/pages/create-account/new-account.container.js
rename to ui/pages/create-account/new-account.container.js
diff --git a/ui/app/pages/error/error.component.js b/ui/pages/error/error.component.js
similarity index 93%
rename from ui/app/pages/error/error.component.js
rename to ui/pages/error/error.component.js
index 92fad5fa6..eedb1ad64 100644
--- a/ui/app/pages/error/error.component.js
+++ b/ui/pages/error/error.component.js
@@ -1,7 +1,7 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
-import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_POPUP } from '../../../shared/constants/app';
class ErrorPage extends PureComponent {
static contextTypes = {
diff --git a/ui/app/pages/error/index.js b/ui/pages/error/index.js
similarity index 100%
rename from ui/app/pages/error/index.js
rename to ui/pages/error/index.js
diff --git a/ui/app/pages/error/index.scss b/ui/pages/error/index.scss
similarity index 100%
rename from ui/app/pages/error/index.scss
rename to ui/pages/error/index.scss
diff --git a/ui/app/pages/first-time-flow/create-password/create-password.component.js b/ui/pages/first-time-flow/create-password/create-password.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/create-password/create-password.component.js
rename to ui/pages/first-time-flow/create-password/create-password.component.js
diff --git a/ui/app/pages/first-time-flow/create-password/create-password.container.js b/ui/pages/first-time-flow/create-password/create-password.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/create-password/create-password.container.js
rename to ui/pages/first-time-flow/create-password/create-password.container.js
diff --git a/ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.js b/ui/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.js
rename to ui/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.js
diff --git a/ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.test.js b/ui/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.test.js
similarity index 100%
rename from ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.test.js
rename to ui/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.component.test.js
diff --git a/ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.container.js b/ui/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.container.js
rename to ui/pages/first-time-flow/create-password/import-with-seed-phrase/import-with-seed-phrase.container.js
diff --git a/ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/index.js b/ui/pages/first-time-flow/create-password/import-with-seed-phrase/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/create-password/import-with-seed-phrase/index.js
rename to ui/pages/first-time-flow/create-password/import-with-seed-phrase/index.js
diff --git a/ui/app/pages/first-time-flow/create-password/index.js b/ui/pages/first-time-flow/create-password/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/create-password/index.js
rename to ui/pages/first-time-flow/create-password/index.js
diff --git a/ui/app/pages/first-time-flow/create-password/new-account/index.js b/ui/pages/first-time-flow/create-password/new-account/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/create-password/new-account/index.js
rename to ui/pages/first-time-flow/create-password/new-account/index.js
diff --git a/ui/app/pages/first-time-flow/create-password/new-account/new-account.component.js b/ui/pages/first-time-flow/create-password/new-account/new-account.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/create-password/new-account/new-account.component.js
rename to ui/pages/first-time-flow/create-password/new-account/new-account.component.js
diff --git a/ui/app/pages/first-time-flow/end-of-flow/end-of-flow.component.js b/ui/pages/first-time-flow/end-of-flow/end-of-flow.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/end-of-flow/end-of-flow.component.js
rename to ui/pages/first-time-flow/end-of-flow/end-of-flow.component.js
diff --git a/ui/app/pages/first-time-flow/end-of-flow/end-of-flow.container.js b/ui/pages/first-time-flow/end-of-flow/end-of-flow.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/end-of-flow/end-of-flow.container.js
rename to ui/pages/first-time-flow/end-of-flow/end-of-flow.container.js
diff --git a/ui/app/pages/first-time-flow/end-of-flow/end-of-flow.test.js b/ui/pages/first-time-flow/end-of-flow/end-of-flow.test.js
similarity index 87%
rename from ui/app/pages/first-time-flow/end-of-flow/end-of-flow.test.js
rename to ui/pages/first-time-flow/end-of-flow/end-of-flow.test.js
index 314025110..e3f04eaa5 100644
--- a/ui/app/pages/first-time-flow/end-of-flow/end-of-flow.test.js
+++ b/ui/pages/first-time-flow/end-of-flow/end-of-flow.test.js
@@ -1,7 +1,7 @@
import React from 'react';
import sinon from 'sinon';
-import { tick } from '../../../../../test/lib/tick';
-import { mountWithRouter } from '../../../../../test/lib/render-helpers';
+import { tick } from '../../../../test/lib/tick';
+import { mountWithRouter } from '../../../../test/lib/render-helpers';
import { DEFAULT_ROUTE } from '../../../helpers/constants/routes';
import EndOfFlowScreen from './end-of-flow.container';
diff --git a/ui/app/pages/first-time-flow/end-of-flow/index.js b/ui/pages/first-time-flow/end-of-flow/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/end-of-flow/index.js
rename to ui/pages/first-time-flow/end-of-flow/index.js
diff --git a/ui/app/pages/first-time-flow/end-of-flow/index.scss b/ui/pages/first-time-flow/end-of-flow/index.scss
similarity index 100%
rename from ui/app/pages/first-time-flow/end-of-flow/index.scss
rename to ui/pages/first-time-flow/end-of-flow/index.scss
diff --git a/ui/app/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.component.js b/ui/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.component.js
rename to ui/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.component.js
diff --git a/ui/app/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.container.js b/ui/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.container.js
rename to ui/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.container.js
diff --git a/ui/app/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.test.js b/ui/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.test.js
similarity index 97%
rename from ui/app/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.test.js
rename to ui/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.test.js
index ab057080d..e07331222 100644
--- a/ui/app/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.test.js
+++ b/ui/pages/first-time-flow/first-time-flow-switch/first-time-flow-switch.test.js
@@ -1,5 +1,5 @@
import React from 'react';
-import { mountWithRouter } from '../../../../../test/lib/render-helpers';
+import { mountWithRouter } from '../../../../test/lib/render-helpers';
import {
DEFAULT_ROUTE,
LOCK_ROUTE,
diff --git a/ui/app/pages/first-time-flow/first-time-flow-switch/index.js b/ui/pages/first-time-flow/first-time-flow-switch/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/first-time-flow-switch/index.js
rename to ui/pages/first-time-flow/first-time-flow-switch/index.js
diff --git a/ui/app/pages/first-time-flow/first-time-flow.component.js b/ui/pages/first-time-flow/first-time-flow.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/first-time-flow.component.js
rename to ui/pages/first-time-flow/first-time-flow.component.js
diff --git a/ui/app/pages/first-time-flow/first-time-flow.container.js b/ui/pages/first-time-flow/first-time-flow.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/first-time-flow.container.js
rename to ui/pages/first-time-flow/first-time-flow.container.js
diff --git a/ui/app/pages/first-time-flow/index.js b/ui/pages/first-time-flow/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/index.js
rename to ui/pages/first-time-flow/index.js
diff --git a/ui/app/pages/first-time-flow/index.scss b/ui/pages/first-time-flow/index.scss
similarity index 100%
rename from ui/app/pages/first-time-flow/index.scss
rename to ui/pages/first-time-flow/index.scss
diff --git a/ui/app/pages/first-time-flow/metametrics-opt-in/index.js b/ui/pages/first-time-flow/metametrics-opt-in/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/metametrics-opt-in/index.js
rename to ui/pages/first-time-flow/metametrics-opt-in/index.js
diff --git a/ui/app/pages/first-time-flow/metametrics-opt-in/index.scss b/ui/pages/first-time-flow/metametrics-opt-in/index.scss
similarity index 100%
rename from ui/app/pages/first-time-flow/metametrics-opt-in/index.scss
rename to ui/pages/first-time-flow/metametrics-opt-in/index.scss
diff --git a/ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js b/ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js
rename to ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js
diff --git a/ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.container.js b/ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.container.js
rename to ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.container.js
diff --git a/ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.test.js b/ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.test.js
similarity index 92%
rename from ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.test.js
rename to ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.test.js
index fa1d61889..4a83441b0 100644
--- a/ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.test.js
+++ b/ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.test.js
@@ -1,7 +1,7 @@
import React from 'react';
import sinon from 'sinon';
import configureMockStore from 'redux-mock-store';
-import { mountWithRouter } from '../../../../../test/lib/render-helpers';
+import { mountWithRouter } from '../../../../test/lib/render-helpers';
import MetaMetricsOptIn from './metametrics-opt-in.container';
describe('MetaMetricsOptIn', () => {
diff --git a/ui/app/pages/first-time-flow/onboarding-initiator-util.js b/ui/pages/first-time-flow/onboarding-initiator-util.js
similarity index 100%
rename from ui/app/pages/first-time-flow/onboarding-initiator-util.js
rename to ui/pages/first-time-flow/onboarding-initiator-util.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase-component.test.js b/ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase-component.test.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase-component.test.js
rename to ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase-component.test.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.component.js b/ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.component.js
rename to ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.component.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.container.js b/ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.container.js
rename to ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.container.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/draggable-seed.component.js b/ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/draggable-seed.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/draggable-seed.component.js
rename to ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/draggable-seed.component.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.js b/ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.js
rename to ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.scss b/ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.scss
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.scss
rename to ui/pages/first-time-flow/seed-phrase/confirm-seed-phrase/index.scss
diff --git a/ui/app/pages/first-time-flow/seed-phrase/index.js b/ui/pages/first-time-flow/seed-phrase/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/index.js
rename to ui/pages/first-time-flow/seed-phrase/index.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/index.scss b/ui/pages/first-time-flow/seed-phrase/index.scss
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/index.scss
rename to ui/pages/first-time-flow/seed-phrase/index.scss
diff --git a/ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.js b/ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.js
rename to ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.scss b/ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.scss
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.scss
rename to ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/index.scss
diff --git a/ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.component.js b/ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.component.js
rename to ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.component.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.container.js b/ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.container.js
rename to ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.container.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.test.js b/ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.test.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.test.js
rename to ui/pages/first-time-flow/seed-phrase/reveal-seed-phrase/reveal-seed-phrase.test.js
diff --git a/ui/app/pages/first-time-flow/seed-phrase/seed-phrase.component.js b/ui/pages/first-time-flow/seed-phrase/seed-phrase.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/seed-phrase/seed-phrase.component.js
rename to ui/pages/first-time-flow/seed-phrase/seed-phrase.component.js
diff --git a/ui/app/pages/first-time-flow/select-action/index.js b/ui/pages/first-time-flow/select-action/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/select-action/index.js
rename to ui/pages/first-time-flow/select-action/index.js
diff --git a/ui/app/pages/first-time-flow/select-action/index.scss b/ui/pages/first-time-flow/select-action/index.scss
similarity index 100%
rename from ui/app/pages/first-time-flow/select-action/index.scss
rename to ui/pages/first-time-flow/select-action/index.scss
diff --git a/ui/app/pages/first-time-flow/select-action/select-action.component.js b/ui/pages/first-time-flow/select-action/select-action.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/select-action/select-action.component.js
rename to ui/pages/first-time-flow/select-action/select-action.component.js
diff --git a/ui/app/pages/first-time-flow/select-action/select-action.container.js b/ui/pages/first-time-flow/select-action/select-action.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/select-action/select-action.container.js
rename to ui/pages/first-time-flow/select-action/select-action.container.js
diff --git a/ui/app/pages/first-time-flow/select-action/select-action.test.js b/ui/pages/first-time-flow/select-action/select-action.test.js
similarity index 95%
rename from ui/app/pages/first-time-flow/select-action/select-action.test.js
rename to ui/pages/first-time-flow/select-action/select-action.test.js
index 013176b30..e0b79c789 100644
--- a/ui/app/pages/first-time-flow/select-action/select-action.test.js
+++ b/ui/pages/first-time-flow/select-action/select-action.test.js
@@ -1,6 +1,6 @@
import React from 'react';
import sinon from 'sinon';
-import { mountWithRouter } from '../../../../../test/lib/render-helpers';
+import { mountWithRouter } from '../../../../test/lib/render-helpers';
import SelectAction from './select-action.container';
describe('Selection Action', () => {
diff --git a/ui/app/pages/first-time-flow/welcome/index.js b/ui/pages/first-time-flow/welcome/index.js
similarity index 100%
rename from ui/app/pages/first-time-flow/welcome/index.js
rename to ui/pages/first-time-flow/welcome/index.js
diff --git a/ui/app/pages/first-time-flow/welcome/index.scss b/ui/pages/first-time-flow/welcome/index.scss
similarity index 100%
rename from ui/app/pages/first-time-flow/welcome/index.scss
rename to ui/pages/first-time-flow/welcome/index.scss
diff --git a/ui/app/pages/first-time-flow/welcome/welcome.component.js b/ui/pages/first-time-flow/welcome/welcome.component.js
similarity index 100%
rename from ui/app/pages/first-time-flow/welcome/welcome.component.js
rename to ui/pages/first-time-flow/welcome/welcome.component.js
diff --git a/ui/app/pages/first-time-flow/welcome/welcome.container.js b/ui/pages/first-time-flow/welcome/welcome.container.js
similarity index 100%
rename from ui/app/pages/first-time-flow/welcome/welcome.container.js
rename to ui/pages/first-time-flow/welcome/welcome.container.js
diff --git a/ui/app/pages/first-time-flow/welcome/welcome.test.js b/ui/pages/first-time-flow/welcome/welcome.test.js
similarity index 95%
rename from ui/app/pages/first-time-flow/welcome/welcome.test.js
rename to ui/pages/first-time-flow/welcome/welcome.test.js
index 2d60b4d57..14d1a22cc 100644
--- a/ui/app/pages/first-time-flow/welcome/welcome.test.js
+++ b/ui/pages/first-time-flow/welcome/welcome.test.js
@@ -1,7 +1,7 @@
import React from 'react';
import sinon from 'sinon';
import configureMockStore from 'redux-mock-store';
-import { mountWithRouter } from '../../../../../test/lib/render-helpers';
+import { mountWithRouter } from '../../../../test/lib/render-helpers';
import Welcome from './welcome.container';
describe('Welcome', () => {
diff --git a/ui/app/pages/home/home.component.js b/ui/pages/home/home.component.js
similarity index 100%
rename from ui/app/pages/home/home.component.js
rename to ui/pages/home/home.component.js
diff --git a/ui/app/pages/home/home.container.js b/ui/pages/home/home.container.js
similarity index 96%
rename from ui/app/pages/home/home.container.js
rename to ui/pages/home/home.container.js
index 6020c1510..c9e0e68a6 100644
--- a/ui/app/pages/home/home.container.js
+++ b/ui/pages/home/home.container.js
@@ -29,15 +29,15 @@ import {
import { setThreeBoxLastUpdated, hideWhatsNewPopup } from '../../ducks/app/app';
import { getWeb3ShimUsageAlertEnabledness } from '../../ducks/metamask/metamask';
import { getSwapsFeatureLiveness } from '../../ducks/swaps/swaps';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
import {
ENVIRONMENT_TYPE_NOTIFICATION,
ENVIRONMENT_TYPE_POPUP,
-} from '../../../../shared/constants/app';
+} from '../../../shared/constants/app';
import {
ALERT_TYPES,
WEB3_SHIM_USAGE_ALERT_STATES,
-} from '../../../../shared/constants/alerts';
+} from '../../../shared/constants/alerts';
import Home from './home.component';
const mapStateToProps = (state) => {
diff --git a/ui/app/pages/home/index.js b/ui/pages/home/index.js
similarity index 100%
rename from ui/app/pages/home/index.js
rename to ui/pages/home/index.js
diff --git a/ui/app/pages/home/index.scss b/ui/pages/home/index.scss
similarity index 100%
rename from ui/app/pages/home/index.scss
rename to ui/pages/home/index.scss
diff --git a/ui/app/pages/index.js b/ui/pages/index.js
similarity index 100%
rename from ui/app/pages/index.js
rename to ui/pages/index.js
diff --git a/ui/app/pages/keychains/index.scss b/ui/pages/keychains/index.scss
similarity index 100%
rename from ui/app/pages/keychains/index.scss
rename to ui/pages/keychains/index.scss
diff --git a/ui/app/pages/keychains/restore-vault.js b/ui/pages/keychains/restore-vault.js
similarity index 100%
rename from ui/app/pages/keychains/restore-vault.js
rename to ui/pages/keychains/restore-vault.js
diff --git a/ui/app/pages/keychains/reveal-seed.js b/ui/pages/keychains/reveal-seed.js
similarity index 100%
rename from ui/app/pages/keychains/reveal-seed.js
rename to ui/pages/keychains/reveal-seed.js
diff --git a/ui/app/pages/keychains/reveal-seed.test.js b/ui/pages/keychains/reveal-seed.test.js
similarity index 100%
rename from ui/app/pages/keychains/reveal-seed.test.js
rename to ui/pages/keychains/reveal-seed.test.js
diff --git a/ui/app/pages/lock/index.js b/ui/pages/lock/index.js
similarity index 100%
rename from ui/app/pages/lock/index.js
rename to ui/pages/lock/index.js
diff --git a/ui/app/pages/lock/lock.component.js b/ui/pages/lock/lock.component.js
similarity index 100%
rename from ui/app/pages/lock/lock.component.js
rename to ui/pages/lock/lock.component.js
diff --git a/ui/app/pages/lock/lock.container.js b/ui/pages/lock/lock.container.js
similarity index 100%
rename from ui/app/pages/lock/lock.container.js
rename to ui/pages/lock/lock.container.js
diff --git a/ui/app/pages/lock/lock.test.js b/ui/pages/lock/lock.test.js
similarity index 92%
rename from ui/app/pages/lock/lock.test.js
rename to ui/pages/lock/lock.test.js
index 66de4a245..6f7d1def0 100644
--- a/ui/app/pages/lock/lock.test.js
+++ b/ui/pages/lock/lock.test.js
@@ -1,6 +1,6 @@
import React from 'react';
import sinon from 'sinon';
-import { mountWithRouter } from '../../../../test/lib/render-helpers';
+import { mountWithRouter } from '../../../test/lib/render-helpers';
import Lock from './lock.container';
describe('Lock', () => {
diff --git a/ui/app/pages/mobile-sync/index.js b/ui/pages/mobile-sync/index.js
similarity index 100%
rename from ui/app/pages/mobile-sync/index.js
rename to ui/pages/mobile-sync/index.js
diff --git a/ui/app/pages/mobile-sync/mobile-sync.component.js b/ui/pages/mobile-sync/mobile-sync.component.js
similarity index 100%
rename from ui/app/pages/mobile-sync/mobile-sync.component.js
rename to ui/pages/mobile-sync/mobile-sync.component.js
diff --git a/ui/app/pages/mobile-sync/mobile-sync.container.js b/ui/pages/mobile-sync/mobile-sync.container.js
similarity index 100%
rename from ui/app/pages/mobile-sync/mobile-sync.container.js
rename to ui/pages/mobile-sync/mobile-sync.container.js
diff --git a/ui/app/pages/pages.scss b/ui/pages/pages.scss
similarity index 100%
rename from ui/app/pages/pages.scss
rename to ui/pages/pages.scss
diff --git a/ui/app/pages/permissions-connect/choose-account/choose-account.component.js b/ui/pages/permissions-connect/choose-account/choose-account.component.js
similarity index 100%
rename from ui/app/pages/permissions-connect/choose-account/choose-account.component.js
rename to ui/pages/permissions-connect/choose-account/choose-account.component.js
diff --git a/ui/app/pages/permissions-connect/choose-account/index.js b/ui/pages/permissions-connect/choose-account/index.js
similarity index 100%
rename from ui/app/pages/permissions-connect/choose-account/index.js
rename to ui/pages/permissions-connect/choose-account/index.js
diff --git a/ui/app/pages/permissions-connect/choose-account/index.scss b/ui/pages/permissions-connect/choose-account/index.scss
similarity index 100%
rename from ui/app/pages/permissions-connect/choose-account/index.scss
rename to ui/pages/permissions-connect/choose-account/index.scss
diff --git a/ui/app/pages/permissions-connect/index.js b/ui/pages/permissions-connect/index.js
similarity index 100%
rename from ui/app/pages/permissions-connect/index.js
rename to ui/pages/permissions-connect/index.js
diff --git a/ui/app/pages/permissions-connect/index.scss b/ui/pages/permissions-connect/index.scss
similarity index 100%
rename from ui/app/pages/permissions-connect/index.scss
rename to ui/pages/permissions-connect/index.scss
diff --git a/ui/app/pages/permissions-connect/permissions-connect.component.js b/ui/pages/permissions-connect/permissions-connect.component.js
similarity index 98%
rename from ui/app/pages/permissions-connect/permissions-connect.component.js
rename to ui/pages/permissions-connect/permissions-connect.component.js
index 1927af9ae..b9706faca 100644
--- a/ui/app/pages/permissions-connect/permissions-connect.component.js
+++ b/ui/pages/permissions-connect/permissions-connect.component.js
@@ -1,8 +1,8 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { Switch, Route } from 'react-router-dom';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
-import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../shared/constants/app';
import { DEFAULT_ROUTE } from '../../helpers/constants/routes';
import PermissionPageContainer from '../../components/app/permission-page-container';
import ChooseAccount from './choose-account';
diff --git a/ui/app/pages/permissions-connect/permissions-connect.container.js b/ui/pages/permissions-connect/permissions-connect.container.js
similarity index 100%
rename from ui/app/pages/permissions-connect/permissions-connect.container.js
rename to ui/pages/permissions-connect/permissions-connect.container.js
diff --git a/ui/app/pages/permissions-connect/redirect/index.js b/ui/pages/permissions-connect/redirect/index.js
similarity index 100%
rename from ui/app/pages/permissions-connect/redirect/index.js
rename to ui/pages/permissions-connect/redirect/index.js
diff --git a/ui/app/pages/permissions-connect/redirect/index.scss b/ui/pages/permissions-connect/redirect/index.scss
similarity index 100%
rename from ui/app/pages/permissions-connect/redirect/index.scss
rename to ui/pages/permissions-connect/redirect/index.scss
diff --git a/ui/app/pages/permissions-connect/redirect/permissions-redirect.component.js b/ui/pages/permissions-connect/redirect/permissions-redirect.component.js
similarity index 100%
rename from ui/app/pages/permissions-connect/redirect/permissions-redirect.component.js
rename to ui/pages/permissions-connect/redirect/permissions-redirect.component.js
diff --git a/ui/app/pages/routes/index.js b/ui/pages/routes/index.js
similarity index 100%
rename from ui/app/pages/routes/index.js
rename to ui/pages/routes/index.js
diff --git a/ui/app/pages/routes/routes.component.js b/ui/pages/routes/routes.component.js
similarity index 98%
rename from ui/app/pages/routes/routes.component.js
rename to ui/pages/routes/routes.component.js
index 5648e4e20..3248799d2 100644
--- a/ui/app/pages/routes/routes.component.js
+++ b/ui/pages/routes/routes.component.js
@@ -59,9 +59,9 @@ import {
import {
ENVIRONMENT_TYPE_NOTIFICATION,
ENVIRONMENT_TYPE_POPUP,
-} from '../../../../shared/constants/app';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
-import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction';
+} from '../../../shared/constants/app';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
+import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import ConfirmationPage from '../confirmation';
export default class Routes extends Component {
diff --git a/ui/app/pages/routes/routes.container.js b/ui/pages/routes/routes.container.js
similarity index 100%
rename from ui/app/pages/routes/routes.container.js
rename to ui/pages/routes/routes.container.js
diff --git a/ui/app/pages/send/index.js b/ui/pages/send/index.js
similarity index 100%
rename from ui/app/pages/send/index.js
rename to ui/pages/send/index.js
diff --git a/ui/app/pages/send/send-content/add-recipient/add-recipient.component.js b/ui/pages/send/send-content/add-recipient/add-recipient.component.js
similarity index 99%
rename from ui/app/pages/send/send-content/add-recipient/add-recipient.component.js
rename to ui/pages/send/send-content/add-recipient/add-recipient.component.js
index a7afd2141..da7999c94 100644
--- a/ui/app/pages/send/send-content/add-recipient/add-recipient.component.js
+++ b/ui/pages/send/send-content/add-recipient/add-recipient.component.js
@@ -11,7 +11,7 @@ import Confusable from '../../../../components/ui/confusable';
import {
isBurnAddress,
isValidHexAddress,
-} from '../../../../../../shared/modules/hexstring-utils';
+} from '../../../../../shared/modules/hexstring-utils';
export default class AddRecipient extends Component {
static propTypes = {
diff --git a/ui/app/pages/send/send-content/add-recipient/add-recipient.component.test.js b/ui/pages/send/send-content/add-recipient/add-recipient.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/add-recipient/add-recipient.component.test.js
rename to ui/pages/send/send-content/add-recipient/add-recipient.component.test.js
diff --git a/ui/app/pages/send/send-content/add-recipient/add-recipient.container.js b/ui/pages/send/send-content/add-recipient/add-recipient.container.js
similarity index 100%
rename from ui/app/pages/send/send-content/add-recipient/add-recipient.container.js
rename to ui/pages/send/send-content/add-recipient/add-recipient.container.js
diff --git a/ui/app/pages/send/send-content/add-recipient/add-recipient.container.test.js b/ui/pages/send/send-content/add-recipient/add-recipient.container.test.js
similarity index 94%
rename from ui/app/pages/send/send-content/add-recipient/add-recipient.container.test.js
rename to ui/pages/send/send-content/add-recipient/add-recipient.container.test.js
index 8e02da161..696ca926b 100644
--- a/ui/app/pages/send/send-content/add-recipient/add-recipient.container.test.js
+++ b/ui/pages/send/send-content/add-recipient/add-recipient.container.test.js
@@ -13,7 +13,7 @@ jest.mock('react-redux', () => ({
},
}));
-jest.mock('../../../../../app/selectors', () => ({
+jest.mock('../../../../selectors', () => ({
getSendEnsResolution: (s) => `mockSendEnsResolution:${s}`,
getSendEnsResolutionError: (s) => `mockSendEnsResolutionError:${s}`,
getAddressBook: (s) => [{ name: `mockAddressBook:${s}` }],
@@ -24,7 +24,7 @@ jest.mock('../../../../../app/selectors', () => ({
],
}));
-jest.mock('../../../../../app/store/actions', () => ({
+jest.mock('../../../../store/actions', () => ({
updateSendTo: jest.fn(),
}));
diff --git a/ui/app/pages/send/send-content/add-recipient/add-recipient.js b/ui/pages/send/send-content/add-recipient/add-recipient.js
similarity index 96%
rename from ui/app/pages/send/send-content/add-recipient/add-recipient.js
rename to ui/pages/send/send-content/add-recipient/add-recipient.js
index 3124ccdb5..5141fda1d 100644
--- a/ui/app/pages/send/send-content/add-recipient/add-recipient.js
+++ b/ui/pages/send/send-content/add-recipient/add-recipient.js
@@ -19,7 +19,7 @@ import {
isBurnAddress,
isValidHexAddress,
toChecksumHexAddress,
-} from '../../../../../../shared/modules/hexstring-utils';
+} from '../../../../../shared/modules/hexstring-utils';
export function getToErrorObject(to, sendTokenAddress, chainId) {
let toError = null;
diff --git a/ui/app/pages/send/send-content/add-recipient/add-recipient.utils.test.js b/ui/pages/send/send-content/add-recipient/add-recipient.utils.test.js
similarity index 92%
rename from ui/app/pages/send/send-content/add-recipient/add-recipient.utils.test.js
rename to ui/pages/send/send-content/add-recipient/add-recipient.utils.test.js
index 33f70b876..bd498a7bd 100644
--- a/ui/app/pages/send/send-content/add-recipient/add-recipient.utils.test.js
+++ b/ui/pages/send/send-content/add-recipient/add-recipient.utils.test.js
@@ -7,15 +7,12 @@ import {
} from '../../send.constants';
import { getToErrorObject, getToWarningObject } from './add-recipient';
-jest.mock('../../../../../app/helpers/utils/util', () => ({
+jest.mock('../../../../helpers/utils/util', () => ({
isDefaultMetaMaskChain: jest.fn().mockReturnValue(true),
isEthNetwork: jest.fn().mockReturnValue(true),
checkExistingAddresses: jest.fn().mockReturnValue(true),
- isValidDomainName: jest.requireActual('../../../../../app/helpers/utils/util')
- .isValidDomainName,
- isOriginContractAddress: jest.requireActual(
- '../../../../../app/helpers/utils/util',
- ).isOriginContractAddress,
+ isOriginContractAddress: jest.requireActual('../../../../helpers/utils/util')
+ .isOriginContractAddress,
}));
jest.mock('../../../../../../shared/modules/hexstring-utils', () => ({
diff --git a/ui/app/pages/send/send-content/add-recipient/ens-input.component.js b/ui/pages/send/send-content/add-recipient/ens-input.component.js
similarity index 98%
rename from ui/app/pages/send/send-content/add-recipient/ens-input.component.js
rename to ui/pages/send/send-content/add-recipient/ens-input.component.js
index 9012ee643..f8899b72f 100644
--- a/ui/app/pages/send/send-content/add-recipient/ens-input.component.js
+++ b/ui/pages/send/send-content/add-recipient/ens-input.component.js
@@ -9,12 +9,12 @@ import networkMap from 'ethereum-ens-network-map';
import log from 'loglevel';
import { isHexString } from 'ethereumjs-util';
import { ellipsify } from '../../send.utils';
-import { isValidDomainName } from '../../../../helpers/utils/util';
-import { MAINNET_NETWORK_ID } from '../../../../../../shared/constants/network';
import {
isBurnAddress,
isValidHexAddress,
-} from '../../../../../../shared/modules/hexstring-utils';
+} from '../../../../../shared/modules/hexstring-utils';
+import { isValidDomainName } from '../../../../helpers/utils/util';
+import { MAINNET_NETWORK_ID } from '../../../../../shared/constants/network';
// Local Constants
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
diff --git a/ui/app/pages/send/send-content/add-recipient/ens-input.container.js b/ui/pages/send/send-content/add-recipient/ens-input.container.js
similarity index 85%
rename from ui/app/pages/send/send-content/add-recipient/ens-input.container.js
rename to ui/pages/send/send-content/add-recipient/ens-input.container.js
index 42e75e501..90d2c3ff4 100644
--- a/ui/app/pages/send/send-content/add-recipient/ens-input.container.js
+++ b/ui/pages/send/send-content/add-recipient/ens-input.container.js
@@ -1,5 +1,5 @@
import { connect } from 'react-redux';
-import { CHAIN_ID_TO_NETWORK_ID_MAP } from '../../../../../../shared/constants/network';
+import { CHAIN_ID_TO_NETWORK_ID_MAP } from '../../../../../shared/constants/network';
import {
getSendTo,
getSendToNickname,
diff --git a/ui/app/pages/send/send-content/add-recipient/ens-input.js b/ui/pages/send/send-content/add-recipient/ens-input.js
similarity index 100%
rename from ui/app/pages/send/send-content/add-recipient/ens-input.js
rename to ui/pages/send/send-content/add-recipient/ens-input.js
diff --git a/ui/app/pages/send/send-content/add-recipient/index.js b/ui/pages/send/send-content/add-recipient/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/add-recipient/index.js
rename to ui/pages/send/send-content/add-recipient/index.js
diff --git a/ui/app/pages/send/send-content/index.js b/ui/pages/send/send-content/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/index.js
rename to ui/pages/send/send-content/index.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.js b/ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.js
rename to ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.test.js b/ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.test.js
rename to ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.component.test.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.js b/ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.js
rename to ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.test.js b/ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.test.js
similarity index 93%
rename from ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.test.js
rename to ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.test.js
index 4137ce0f2..90f95e6cb 100644
--- a/ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.test.js
+++ b/ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.container.test.js
@@ -15,7 +15,7 @@ jest.mock('react-redux', () => ({
},
}));
-jest.mock('../../../../../../app/selectors', () => ({
+jest.mock('../../../../../selectors', () => ({
getGasTotal: (s) => `mockGasTotal:${s}`,
getSendToken: (s) => `mockSendToken:${s}`,
getSendFromBalance: (s) => `mockBalance:${s}`,
@@ -28,11 +28,11 @@ jest.mock('./amount-max-button.utils.js', () => ({
calcMaxAmount: (mockObj) => mockObj.val + 1,
}));
-jest.mock('../../../../../../app/store/actions', () => ({
+jest.mock('../../../../../store/actions', () => ({
setMaxModeTo: jest.fn(),
updateSendAmount: jest.fn(),
}));
-jest.mock('../../../../../../app/ducks/send/send.duck', () => ({
+jest.mock('../../../../../ducks/send/send.duck', () => ({
updateSendErrors: jest.fn(),
}));
diff --git a/ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.js b/ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.js
similarity index 89%
rename from ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.js
rename to ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.js
index 934e2fd0a..6826b5e39 100644
--- a/ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.js
+++ b/ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.js
@@ -2,7 +2,7 @@ import {
multiplyCurrencies,
subtractCurrencies,
} from '../../../../../helpers/utils/conversion-util';
-import { addHexPrefix } from '../../../../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../../../../app/scripts/lib/util';
export function calcMaxAmount({ balance, gasTotal, sendToken, tokenBalance }) {
const { decimals } = sendToken || {};
diff --git a/ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.test.js b/ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.test.js
rename to ui/pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils.test.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/amount-max-button/index.js b/ui/pages/send/send-content/send-amount-row/amount-max-button/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/amount-max-button/index.js
rename to ui/pages/send/send-content/send-amount-row/amount-max-button/index.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/index.js b/ui/pages/send/send-content/send-amount-row/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/index.js
rename to ui/pages/send/send-content/send-amount-row/index.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/send-amount-row.component.js b/ui/pages/send/send-content/send-amount-row/send-amount-row.component.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/send-amount-row.component.js
rename to ui/pages/send/send-content/send-amount-row/send-amount-row.component.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/send-amount-row.component.test.js b/ui/pages/send/send-content/send-amount-row/send-amount-row.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/send-amount-row.component.test.js
rename to ui/pages/send/send-content/send-amount-row/send-amount-row.component.test.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/send-amount-row.container.js b/ui/pages/send/send-content/send-amount-row/send-amount-row.container.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/send-amount-row.container.js
rename to ui/pages/send/send-content/send-amount-row/send-amount-row.container.js
diff --git a/ui/app/pages/send/send-content/send-amount-row/send-amount-row.container.test.js b/ui/pages/send/send-content/send-amount-row/send-amount-row.container.test.js
similarity index 95%
rename from ui/app/pages/send/send-content/send-amount-row/send-amount-row.container.test.js
rename to ui/pages/send/send-content/send-amount-row/send-amount-row.container.test.js
index 1e0979673..6d3b06aef 100644
--- a/ui/app/pages/send/send-content/send-amount-row/send-amount-row.container.test.js
+++ b/ui/pages/send/send-content/send-amount-row/send-amount-row.container.test.js
@@ -28,12 +28,12 @@ jest.mock('../../send.utils', () => ({
}),
}));
-jest.mock('../../../../../app/store/actions', () => ({
+jest.mock('../../../../store/actions', () => ({
setMaxModeTo: jest.fn(),
updateSendAmount: jest.fn(),
}));
-jest.mock('../../../../../app/ducks/send/send.duck', () => ({
+jest.mock('../../../../ducks/send/send.duck', () => ({
updateSendErrors: jest.fn(),
}));
diff --git a/ui/app/pages/send/send-content/send-amount-row/send-amount-row.scss b/ui/pages/send/send-content/send-amount-row/send-amount-row.scss
similarity index 100%
rename from ui/app/pages/send/send-content/send-amount-row/send-amount-row.scss
rename to ui/pages/send/send-content/send-amount-row/send-amount-row.scss
diff --git a/ui/app/pages/send/send-content/send-asset-row/index.js b/ui/pages/send/send-content/send-asset-row/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-asset-row/index.js
rename to ui/pages/send/send-content/send-asset-row/index.js
diff --git a/ui/app/pages/send/send-content/send-asset-row/send-asset-row.component.js b/ui/pages/send/send-content/send-asset-row/send-asset-row.component.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-asset-row/send-asset-row.component.js
rename to ui/pages/send/send-content/send-asset-row/send-asset-row.component.js
diff --git a/ui/app/pages/send/send-content/send-asset-row/send-asset-row.container.js b/ui/pages/send/send-content/send-asset-row/send-asset-row.container.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-asset-row/send-asset-row.container.js
rename to ui/pages/send/send-content/send-asset-row/send-asset-row.container.js
diff --git a/ui/app/pages/send/send-content/send-content.component.js b/ui/pages/send/send-content/send-content.component.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-content.component.js
rename to ui/pages/send/send-content/send-content.component.js
diff --git a/ui/app/pages/send/send-content/send-content.component.test.js b/ui/pages/send/send-content/send-content.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-content.component.test.js
rename to ui/pages/send/send-content/send-content.component.test.js
diff --git a/ui/app/pages/send/send-content/send-content.container.js b/ui/pages/send/send-content/send-content.container.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-content.container.js
rename to ui/pages/send/send-content/send-content.container.js
diff --git a/ui/app/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.js b/ui/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.js
rename to ui/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.js
diff --git a/ui/app/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.test.js b/ui/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.test.js
rename to ui/pages/send/send-content/send-gas-row/gas-fee-display/gas-fee-display.component.test.js
diff --git a/ui/app/pages/send/send-content/send-gas-row/gas-fee-display/index.js b/ui/pages/send/send-content/send-gas-row/gas-fee-display/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-gas-row/gas-fee-display/index.js
rename to ui/pages/send/send-content/send-gas-row/gas-fee-display/index.js
diff --git a/ui/app/pages/send/send-content/send-gas-row/index.js b/ui/pages/send/send-content/send-gas-row/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-gas-row/index.js
rename to ui/pages/send/send-content/send-gas-row/index.js
diff --git a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.component.js b/ui/pages/send/send-content/send-gas-row/send-gas-row.component.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-gas-row/send-gas-row.component.js
rename to ui/pages/send/send-content/send-gas-row/send-gas-row.component.js
diff --git a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.component.test.js b/ui/pages/send/send-content/send-gas-row/send-gas-row.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-gas-row/send-gas-row.component.test.js
rename to ui/pages/send/send-content/send-gas-row/send-gas-row.component.test.js
diff --git a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.container.js b/ui/pages/send/send-content/send-gas-row/send-gas-row.container.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-gas-row/send-gas-row.container.js
rename to ui/pages/send/send-content/send-gas-row/send-gas-row.container.js
diff --git a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.container.test.js b/ui/pages/send/send-content/send-gas-row/send-gas-row.container.test.js
similarity index 95%
rename from ui/app/pages/send/send-content/send-gas-row/send-gas-row.container.test.js
rename to ui/pages/send/send-content/send-gas-row/send-gas-row.container.test.js
index 6bd3b37cf..db322d25a 100644
--- a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.container.test.js
+++ b/ui/pages/send/send-content/send-gas-row/send-gas-row.container.test.js
@@ -26,7 +26,7 @@ jest.mock('react-redux', () => ({
},
}));
-jest.mock('../../../../../app/selectors', () => ({
+jest.mock('../../../../selectors', () => ({
getSendMaxModeState: (s) => `mockMaxModeOn:${s}`,
}));
@@ -37,18 +37,18 @@ jest.mock('../../send.utils.js', () => ({
calcGasTotal: (gasLimit, gasPrice) => gasLimit + gasPrice,
}));
-jest.mock('../../../../../app/store/actions', () => ({
+jest.mock('../../../../store/actions', () => ({
showModal: jest.fn(),
setGasPrice: jest.fn(),
setGasTotal: jest.fn(),
setGasLimit: jest.fn(),
}));
-jest.mock('../../../../../app/ducks/send/send.duck', () => ({
+jest.mock('../../../../ducks/send/send.duck', () => ({
showGasButtonGroup: jest.fn(),
}));
-jest.mock('../../../../../app/ducks/gas/gas.duck', () => ({
+jest.mock('../../../../ducks/gas/gas.duck', () => ({
resetCustomData: jest.fn(),
setCustomGasPrice: jest.fn(),
setCustomGasLimit: jest.fn(),
diff --git a/ui/app/pages/send/send-content/send-gas-row/send-gas-row.scss b/ui/pages/send/send-content/send-gas-row/send-gas-row.scss
similarity index 100%
rename from ui/app/pages/send/send-content/send-gas-row/send-gas-row.scss
rename to ui/pages/send/send-content/send-gas-row/send-gas-row.scss
diff --git a/ui/app/pages/send/send-content/send-hex-data-row/index.js b/ui/pages/send/send-content/send-hex-data-row/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-hex-data-row/index.js
rename to ui/pages/send/send-content/send-hex-data-row/index.js
diff --git a/ui/app/pages/send/send-content/send-hex-data-row/send-hex-data-row.component.js b/ui/pages/send/send-content/send-hex-data-row/send-hex-data-row.component.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-hex-data-row/send-hex-data-row.component.js
rename to ui/pages/send/send-content/send-hex-data-row/send-hex-data-row.component.js
diff --git a/ui/app/pages/send/send-content/send-hex-data-row/send-hex-data-row.container.js b/ui/pages/send/send-content/send-hex-data-row/send-hex-data-row.container.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-hex-data-row/send-hex-data-row.container.js
rename to ui/pages/send/send-content/send-hex-data-row/send-hex-data-row.container.js
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/index.js b/ui/pages/send/send-content/send-row-wrapper/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/index.js
rename to ui/pages/send/send-content/send-row-wrapper/index.js
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/index.js b/ui/pages/send/send-content/send-row-wrapper/send-row-error-message/index.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/index.js
rename to ui/pages/send/send-content/send-row-wrapper/send-row-error-message/index.js
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.js b/ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.js
rename to ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.js
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.test.js b/ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.test.js
rename to ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.test.js
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.js b/ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.js
rename to ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.js
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.test.js b/ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.test.js
rename to ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.container.test.js
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.scss b/ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.scss
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.scss
rename to ui/pages/send/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.scss
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.js b/ui/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.js
rename to ui/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.js
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.test.js b/ui/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.test.js
rename to ui/pages/send/send-content/send-row-wrapper/send-row-wrapper.component.test.js
diff --git a/ui/app/pages/send/send-content/send-row-wrapper/send-row-wrapper.scss b/ui/pages/send/send-content/send-row-wrapper/send-row-wrapper.scss
similarity index 100%
rename from ui/app/pages/send/send-content/send-row-wrapper/send-row-wrapper.scss
rename to ui/pages/send/send-content/send-row-wrapper/send-row-wrapper.scss
diff --git a/ui/app/pages/send/send-footer/index.js b/ui/pages/send/send-footer/index.js
similarity index 100%
rename from ui/app/pages/send/send-footer/index.js
rename to ui/pages/send/send-footer/index.js
diff --git a/ui/app/pages/send/send-footer/send-footer.component.js b/ui/pages/send/send-footer/send-footer.component.js
similarity index 100%
rename from ui/app/pages/send/send-footer/send-footer.component.js
rename to ui/pages/send/send-footer/send-footer.component.js
diff --git a/ui/app/pages/send/send-footer/send-footer.component.test.js b/ui/pages/send/send-footer/send-footer.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-footer/send-footer.component.test.js
rename to ui/pages/send/send-footer/send-footer.component.test.js
diff --git a/ui/app/pages/send/send-footer/send-footer.container.js b/ui/pages/send/send-footer/send-footer.container.js
similarity index 97%
rename from ui/app/pages/send/send-footer/send-footer.container.js
rename to ui/pages/send/send-footer/send-footer.container.js
index d68d16b60..e8ea039e1 100644
--- a/ui/app/pages/send/send-footer/send-footer.container.js
+++ b/ui/pages/send/send-footer/send-footer.container.js
@@ -27,7 +27,7 @@ import {
getNoGasPriceFetched,
} from '../../../selectors';
import { getMostRecentOverviewPage } from '../../../ducks/history/history';
-import { addHexPrefix } from '../../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../../app/scripts/lib/util';
import SendFooter from './send-footer.component';
import {
addressIsNew,
diff --git a/ui/app/pages/send/send-footer/send-footer.container.test.js b/ui/pages/send/send-footer/send-footer.container.test.js
similarity index 96%
rename from ui/app/pages/send/send-footer/send-footer.container.test.js
rename to ui/pages/send/send-footer/send-footer.container.test.js
index 56e280b70..7fb79cbae 100644
--- a/ui/app/pages/send/send-footer/send-footer.container.test.js
+++ b/ui/pages/send/send-footer/send-footer.container.test.js
@@ -21,7 +21,7 @@ jest.mock('react-redux', () => ({
},
}));
-jest.mock('../../../../app/store/actions.js', () => ({
+jest.mock('../../../store/actions.js', () => ({
addToAddressBook: jest.fn(),
clearSend: jest.fn(),
signTokenTx: jest.fn(),
@@ -29,7 +29,7 @@ jest.mock('../../../../app/store/actions.js', () => ({
updateTransaction: jest.fn(),
}));
-jest.mock('../../../../app/selectors/send.js', () => ({
+jest.mock('../../../selectors/send.js', () => ({
getGasLimit: (s) => `mockGasLimit:${s}`,
getGasPrice: (s) => `mockGasPrice:${s}`,
getGasTotal: (s) => `mockGasTotal:${s}`,
@@ -48,7 +48,7 @@ jest.mock('../../../../app/selectors/send.js', () => ({
getDefaultActiveButtonIndex: () => 0,
}));
-jest.mock('../../../../app/selectors/custom-gas.js', () => ({
+jest.mock('../../../selectors/custom-gas.js', () => ({
getRenderableEstimateDataForSmallButtonsFromGWEI: (s) => [
{ gasEstimateType: `mockGasEstimateType:${s}` },
],
diff --git a/ui/app/pages/send/send-footer/send-footer.scss b/ui/pages/send/send-footer/send-footer.scss
similarity index 100%
rename from ui/app/pages/send/send-footer/send-footer.scss
rename to ui/pages/send/send-footer/send-footer.scss
diff --git a/ui/app/pages/send/send-footer/send-footer.utils.js b/ui/pages/send/send-footer/send-footer.utils.js
similarity index 96%
rename from ui/app/pages/send/send-footer/send-footer.utils.js
rename to ui/pages/send/send-footer/send-footer.utils.js
index 52be9143f..778b07867 100644
--- a/ui/app/pages/send/send-footer/send-footer.utils.js
+++ b/ui/pages/send/send-footer/send-footer.utils.js
@@ -1,6 +1,6 @@
import ethAbi from 'ethereumjs-abi';
import { TOKEN_TRANSFER_FUNCTION_SIGNATURE } from '../send.constants';
-import { addHexPrefix } from '../../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../../app/scripts/lib/util';
import { addHexPrefixToObjectValues } from '../../../helpers/utils/util';
export function constructTxParams({
diff --git a/ui/app/pages/send/send-footer/send-footer.utils.test.js b/ui/pages/send/send-footer/send-footer.utils.test.js
similarity index 100%
rename from ui/app/pages/send/send-footer/send-footer.utils.test.js
rename to ui/pages/send/send-footer/send-footer.utils.test.js
diff --git a/ui/app/pages/send/send-header/index.js b/ui/pages/send/send-header/index.js
similarity index 100%
rename from ui/app/pages/send/send-header/index.js
rename to ui/pages/send/send-header/index.js
diff --git a/ui/app/pages/send/send-header/send-header.component.js b/ui/pages/send/send-header/send-header.component.js
similarity index 100%
rename from ui/app/pages/send/send-header/send-header.component.js
rename to ui/pages/send/send-header/send-header.component.js
diff --git a/ui/app/pages/send/send-header/send-header.component.test.js b/ui/pages/send/send-header/send-header.component.test.js
similarity index 100%
rename from ui/app/pages/send/send-header/send-header.component.test.js
rename to ui/pages/send/send-header/send-header.component.test.js
diff --git a/ui/app/pages/send/send-header/send-header.container.js b/ui/pages/send/send-header/send-header.container.js
similarity index 100%
rename from ui/app/pages/send/send-header/send-header.container.js
rename to ui/pages/send/send-header/send-header.container.js
diff --git a/ui/app/pages/send/send.component.js b/ui/pages/send/send.component.js
similarity index 99%
rename from ui/app/pages/send/send.component.js
rename to ui/pages/send/send.component.js
index 24bd3dc7a..6954f9cfc 100644
--- a/ui/app/pages/send/send.component.js
+++ b/ui/pages/send/send.component.js
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { debounce } from 'lodash';
-import { isValidHexAddress } from '../../../../shared/modules/hexstring-utils';
+import { isValidHexAddress } from '../../../shared/modules/hexstring-utils';
import {
getAmountErrorObject,
getGasFeeErrorObject,
diff --git a/ui/app/pages/send/send.component.test.js b/ui/pages/send/send.component.test.js
similarity index 99%
rename from ui/app/pages/send/send.component.test.js
rename to ui/pages/send/send.component.test.js
index bfceb20dd..5cc90307e 100644
--- a/ui/app/pages/send/send.component.test.js
+++ b/ui/pages/send/send.component.test.js
@@ -4,7 +4,7 @@ import sinon from 'sinon';
import {
RINKEBY_CHAIN_ID,
ROPSTEN_CHAIN_ID,
-} from '../../../../shared/constants/network';
+} from '../../../shared/constants/network';
import SendTransactionScreen from './send.component';
import * as util from './send.utils';
diff --git a/ui/app/pages/send/send.constants.js b/ui/pages/send/send.constants.js
similarity index 96%
rename from ui/app/pages/send/send.constants.js
rename to ui/pages/send/send.constants.js
index 93b620d14..ffeaf0397 100644
--- a/ui/app/pages/send/send.constants.js
+++ b/ui/pages/send/send.constants.js
@@ -2,7 +2,7 @@ import {
conversionUtil,
multiplyCurrencies,
} from '../../helpers/utils/conversion-util';
-import { addHexPrefix } from '../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../app/scripts/lib/util';
const MIN_GAS_PRICE_DEC = '0';
const MIN_GAS_PRICE_HEX = parseInt(MIN_GAS_PRICE_DEC, 10).toString(16);
diff --git a/ui/app/pages/send/send.container.js b/ui/pages/send/send.container.js
similarity index 100%
rename from ui/app/pages/send/send.container.js
rename to ui/pages/send/send.container.js
diff --git a/ui/app/pages/send/send.container.test.js b/ui/pages/send/send.container.test.js
similarity index 97%
rename from ui/app/pages/send/send.container.test.js
rename to ui/pages/send/send.container.test.js
index be7f137e9..bb2aca2dd 100644
--- a/ui/app/pages/send/send.container.test.js
+++ b/ui/pages/send/send.container.test.js
@@ -25,12 +25,12 @@ jest.mock('redux', () => ({
compose: (_, arg2) => () => arg2(),
}));
-jest.mock('../../../app/store/actions', () => ({
+jest.mock('../../store/actions', () => ({
updateSendTokenBalance: jest.fn(),
updateGasData: jest.fn(),
setGasTotal: jest.fn(),
}));
-jest.mock('../../../app/ducks/send/send.duck', () => ({
+jest.mock('../../ducks/send/send.duck', () => ({
updateSendErrors: jest.fn(),
resetSendState: jest.fn(),
}));
diff --git a/ui/app/pages/send/send.scss b/ui/pages/send/send.scss
similarity index 100%
rename from ui/app/pages/send/send.scss
rename to ui/pages/send/send.scss
diff --git a/ui/app/pages/send/send.utils.js b/ui/pages/send/send.utils.js
similarity index 99%
rename from ui/app/pages/send/send.utils.js
rename to ui/pages/send/send.utils.js
index ffe76241d..1603061e2 100644
--- a/ui/app/pages/send/send.utils.js
+++ b/ui/pages/send/send.utils.js
@@ -9,7 +9,7 @@ import {
} from '../../helpers/utils/conversion-util';
import { calcTokenAmount } from '../../helpers/utils/token-util';
-import { addHexPrefix } from '../../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../../app/scripts/lib/util';
import {
BASE_TOKEN_GAS_COST,
diff --git a/ui/app/pages/send/send.utils.test.js b/ui/pages/send/send.utils.test.js
similarity index 99%
rename from ui/app/pages/send/send.utils.test.js
rename to ui/pages/send/send.utils.test.js
index f94c00fdc..06d3d8edc 100644
--- a/ui/app/pages/send/send.utils.test.js
+++ b/ui/pages/send/send.utils.test.js
@@ -29,7 +29,7 @@ import {
INSUFFICIENT_TOKENS_ERROR,
} from './send.constants';
-jest.mock('../../../app/helpers/utils/conversion-util', () => ({
+jest.mock('../../helpers/utils/conversion-util', () => ({
addCurrencies: jest.fn((a, b) => {
let [a1, b1] = [a, b];
if (String(a).match(/^0x.+/u)) {
@@ -47,7 +47,7 @@ jest.mock('../../../app/helpers/utils/conversion-util', () => ({
conversionLessThan: (obj1, obj2) => obj1.value < obj2.value,
}));
-jest.mock('../../../app/helpers/utils/token-util', () => ({
+jest.mock('../../helpers/utils/token-util', () => ({
calcTokenAmount: (a, d) => `calc:${a}${d}`,
}));
diff --git a/ui/app/pages/settings/advanced-tab/advanced-tab.component.js b/ui/pages/settings/advanced-tab/advanced-tab.component.js
similarity index 99%
rename from ui/app/pages/settings/advanced-tab/advanced-tab.component.js
rename to ui/pages/settings/advanced-tab/advanced-tab.component.js
index ef95e84f2..cfda8a786 100644
--- a/ui/app/pages/settings/advanced-tab/advanced-tab.component.js
+++ b/ui/pages/settings/advanced-tab/advanced-tab.component.js
@@ -7,8 +7,8 @@ import TextField from '../../../components/ui/text-field';
import Button from '../../../components/ui/button';
import { MOBILE_SYNC_ROUTE } from '../../../helpers/constants/routes';
-import { getPlatform } from '../../../../../app/scripts/lib/util';
-import { PLATFORM_FIREFOX } from '../../../../../shared/constants/app';
+import { getPlatform } from '../../../../app/scripts/lib/util';
+import { PLATFORM_FIREFOX } from '../../../../shared/constants/app';
export default class AdvancedTab extends PureComponent {
static contextTypes = {
diff --git a/ui/app/pages/settings/advanced-tab/advanced-tab.component.test.js b/ui/pages/settings/advanced-tab/advanced-tab.component.test.js
similarity index 100%
rename from ui/app/pages/settings/advanced-tab/advanced-tab.component.test.js
rename to ui/pages/settings/advanced-tab/advanced-tab.component.test.js
diff --git a/ui/app/pages/settings/advanced-tab/advanced-tab.container.js b/ui/pages/settings/advanced-tab/advanced-tab.container.js
similarity index 100%
rename from ui/app/pages/settings/advanced-tab/advanced-tab.container.js
rename to ui/pages/settings/advanced-tab/advanced-tab.container.js
diff --git a/ui/app/pages/settings/advanced-tab/index.js b/ui/pages/settings/advanced-tab/index.js
similarity index 100%
rename from ui/app/pages/settings/advanced-tab/index.js
rename to ui/pages/settings/advanced-tab/index.js
diff --git a/ui/app/pages/settings/alerts-tab/alerts-tab.js b/ui/pages/settings/alerts-tab/alerts-tab.js
similarity index 96%
rename from ui/app/pages/settings/alerts-tab/alerts-tab.js
rename to ui/pages/settings/alerts-tab/alerts-tab.js
index cdf77c7a5..c8d092470 100644
--- a/ui/app/pages/settings/alerts-tab/alerts-tab.js
+++ b/ui/pages/settings/alerts-tab/alerts-tab.js
@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { useSelector } from 'react-redux';
-import { ALERT_TYPES } from '../../../../../shared/constants/alerts';
+import { ALERT_TYPES } from '../../../../shared/constants/alerts';
import Tooltip from '../../../components/ui/tooltip';
import ToggleButton from '../../../components/ui/toggle-button';
import { setAlertEnabledness } from '../../../store/actions';
diff --git a/ui/app/pages/settings/alerts-tab/alerts-tab.scss b/ui/pages/settings/alerts-tab/alerts-tab.scss
similarity index 100%
rename from ui/app/pages/settings/alerts-tab/alerts-tab.scss
rename to ui/pages/settings/alerts-tab/alerts-tab.scss
diff --git a/ui/app/pages/settings/alerts-tab/index.js b/ui/pages/settings/alerts-tab/index.js
similarity index 100%
rename from ui/app/pages/settings/alerts-tab/index.js
rename to ui/pages/settings/alerts-tab/index.js
diff --git a/ui/app/pages/settings/contact-list-tab/add-contact/add-contact.component.js b/ui/pages/settings/contact-list-tab/add-contact/add-contact.component.js
similarity index 98%
rename from ui/app/pages/settings/contact-list-tab/add-contact/add-contact.component.js
rename to ui/pages/settings/contact-list-tab/add-contact/add-contact.component.js
index 8ddd29ac2..f017604fd 100644
--- a/ui/app/pages/settings/contact-list-tab/add-contact/add-contact.component.js
+++ b/ui/pages/settings/contact-list-tab/add-contact/add-contact.component.js
@@ -10,7 +10,7 @@ import PageContainerFooter from '../../../../components/ui/page-container/page-c
import {
isBurnAddress,
isValidHexAddress,
-} from '../../../../../../shared/modules/hexstring-utils';
+} from '../../../../../shared/modules/hexstring-utils';
export default class AddContact extends PureComponent {
static contextTypes = {
diff --git a/ui/app/pages/settings/contact-list-tab/add-contact/add-contact.container.js b/ui/pages/settings/contact-list-tab/add-contact/add-contact.container.js
similarity index 100%
rename from ui/app/pages/settings/contact-list-tab/add-contact/add-contact.container.js
rename to ui/pages/settings/contact-list-tab/add-contact/add-contact.container.js
diff --git a/ui/app/pages/settings/contact-list-tab/add-contact/index.js b/ui/pages/settings/contact-list-tab/add-contact/index.js
similarity index 100%
rename from ui/app/pages/settings/contact-list-tab/add-contact/index.js
rename to ui/pages/settings/contact-list-tab/add-contact/index.js
diff --git a/ui/app/pages/settings/contact-list-tab/contact-list-tab.component.js b/ui/pages/settings/contact-list-tab/contact-list-tab.component.js
similarity index 100%
rename from ui/app/pages/settings/contact-list-tab/contact-list-tab.component.js
rename to ui/pages/settings/contact-list-tab/contact-list-tab.component.js
diff --git a/ui/app/pages/settings/contact-list-tab/contact-list-tab.container.js b/ui/pages/settings/contact-list-tab/contact-list-tab.container.js
similarity index 89%
rename from ui/app/pages/settings/contact-list-tab/contact-list-tab.container.js
rename to ui/pages/settings/contact-list-tab/contact-list-tab.container.js
index 0d80480b5..60e760a11 100644
--- a/ui/app/pages/settings/contact-list-tab/contact-list-tab.container.js
+++ b/ui/pages/settings/contact-list-tab/contact-list-tab.container.js
@@ -2,8 +2,8 @@ import { compose } from 'redux';
import { connect } from 'react-redux';
import { withRouter } from 'react-router-dom';
import { getAddressBook } from '../../../selectors';
-import { ENVIRONMENT_TYPE_POPUP } from '../../../../../shared/constants/app';
-import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../../app/scripts/lib/util';
import {
CONTACT_ADD_ROUTE,
diff --git a/ui/app/pages/settings/contact-list-tab/edit-contact/edit-contact.component.js b/ui/pages/settings/contact-list-tab/edit-contact/edit-contact.component.js
similarity index 98%
rename from ui/app/pages/settings/contact-list-tab/edit-contact/edit-contact.component.js
rename to ui/pages/settings/contact-list-tab/edit-contact/edit-contact.component.js
index 00725f6ea..51419b302 100644
--- a/ui/app/pages/settings/contact-list-tab/edit-contact/edit-contact.component.js
+++ b/ui/pages/settings/contact-list-tab/edit-contact/edit-contact.component.js
@@ -8,7 +8,7 @@ import PageContainerFooter from '../../../../components/ui/page-container/page-c
import {
isBurnAddress,
isValidHexAddress,
-} from '../../../../../../shared/modules/hexstring-utils';
+} from '../../../../../shared/modules/hexstring-utils';
export default class EditContact extends PureComponent {
static contextTypes = {
diff --git a/ui/app/pages/settings/contact-list-tab/edit-contact/edit-contact.container.js b/ui/pages/settings/contact-list-tab/edit-contact/edit-contact.container.js
similarity index 100%
rename from ui/app/pages/settings/contact-list-tab/edit-contact/edit-contact.container.js
rename to ui/pages/settings/contact-list-tab/edit-contact/edit-contact.container.js
diff --git a/ui/app/pages/settings/contact-list-tab/edit-contact/index.js b/ui/pages/settings/contact-list-tab/edit-contact/index.js
similarity index 100%
rename from ui/app/pages/settings/contact-list-tab/edit-contact/index.js
rename to ui/pages/settings/contact-list-tab/edit-contact/index.js
diff --git a/ui/app/pages/settings/contact-list-tab/index.js b/ui/pages/settings/contact-list-tab/index.js
similarity index 100%
rename from ui/app/pages/settings/contact-list-tab/index.js
rename to ui/pages/settings/contact-list-tab/index.js
diff --git a/ui/app/pages/settings/contact-list-tab/index.scss b/ui/pages/settings/contact-list-tab/index.scss
similarity index 100%
rename from ui/app/pages/settings/contact-list-tab/index.scss
rename to ui/pages/settings/contact-list-tab/index.scss
diff --git a/ui/app/pages/settings/contact-list-tab/view-contact/index.js b/ui/pages/settings/contact-list-tab/view-contact/index.js
similarity index 100%
rename from ui/app/pages/settings/contact-list-tab/view-contact/index.js
rename to ui/pages/settings/contact-list-tab/view-contact/index.js
diff --git a/ui/app/pages/settings/contact-list-tab/view-contact/view-contact.component.js b/ui/pages/settings/contact-list-tab/view-contact/view-contact.component.js
similarity index 100%
rename from ui/app/pages/settings/contact-list-tab/view-contact/view-contact.component.js
rename to ui/pages/settings/contact-list-tab/view-contact/view-contact.component.js
diff --git a/ui/app/pages/settings/contact-list-tab/view-contact/view-contact.container.js b/ui/pages/settings/contact-list-tab/view-contact/view-contact.container.js
similarity index 92%
rename from ui/app/pages/settings/contact-list-tab/view-contact/view-contact.container.js
rename to ui/pages/settings/contact-list-tab/view-contact/view-contact.container.js
index 2ce020ffa..275273d0a 100644
--- a/ui/app/pages/settings/contact-list-tab/view-contact/view-contact.container.js
+++ b/ui/pages/settings/contact-list-tab/view-contact/view-contact.container.js
@@ -6,7 +6,7 @@ import {
CONTACT_EDIT_ROUTE,
CONTACT_LIST_ROUTE,
} from '../../../../helpers/constants/routes';
-import { toChecksumHexAddress } from '../../../../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../../../../shared/modules/hexstring-utils';
import ViewContact from './view-contact.component';
const mapStateToProps = (state, ownProps) => {
diff --git a/ui/app/pages/settings/index.js b/ui/pages/settings/index.js
similarity index 100%
rename from ui/app/pages/settings/index.js
rename to ui/pages/settings/index.js
diff --git a/ui/app/pages/settings/index.scss b/ui/pages/settings/index.scss
similarity index 100%
rename from ui/app/pages/settings/index.scss
rename to ui/pages/settings/index.scss
diff --git a/ui/app/pages/settings/info-tab/index.js b/ui/pages/settings/info-tab/index.js
similarity index 100%
rename from ui/app/pages/settings/info-tab/index.js
rename to ui/pages/settings/info-tab/index.js
diff --git a/ui/app/pages/settings/info-tab/index.scss b/ui/pages/settings/info-tab/index.scss
similarity index 100%
rename from ui/app/pages/settings/info-tab/index.scss
rename to ui/pages/settings/info-tab/index.scss
diff --git a/ui/app/pages/settings/info-tab/info-tab.component.js b/ui/pages/settings/info-tab/info-tab.component.js
similarity index 100%
rename from ui/app/pages/settings/info-tab/info-tab.component.js
rename to ui/pages/settings/info-tab/info-tab.component.js
diff --git a/ui/app/pages/settings/networks-tab/index.js b/ui/pages/settings/networks-tab/index.js
similarity index 100%
rename from ui/app/pages/settings/networks-tab/index.js
rename to ui/pages/settings/networks-tab/index.js
diff --git a/ui/app/pages/settings/networks-tab/index.scss b/ui/pages/settings/networks-tab/index.scss
similarity index 100%
rename from ui/app/pages/settings/networks-tab/index.scss
rename to ui/pages/settings/networks-tab/index.scss
diff --git a/ui/app/pages/settings/networks-tab/network-form/index.js b/ui/pages/settings/networks-tab/network-form/index.js
similarity index 100%
rename from ui/app/pages/settings/networks-tab/network-form/index.js
rename to ui/pages/settings/networks-tab/network-form/index.js
diff --git a/ui/app/pages/settings/networks-tab/network-form/network-form.component.js b/ui/pages/settings/networks-tab/network-form/network-form.component.js
similarity index 99%
rename from ui/app/pages/settings/networks-tab/network-form/network-form.component.js
rename to ui/pages/settings/networks-tab/network-form/network-form.component.js
index 58a3f5754..ff969be39 100644
--- a/ui/app/pages/settings/networks-tab/network-form/network-form.component.js
+++ b/ui/pages/settings/networks-tab/network-form/network-form.component.js
@@ -8,8 +8,8 @@ import Tooltip from '../../../../components/ui/tooltip';
import {
isPrefixedFormattedHexString,
isSafeChainId,
-} from '../../../../../../shared/modules/network.utils';
-import { jsonRpcRequest } from '../../../../../../shared/modules/rpc.utils';
+} from '../../../../../shared/modules/network.utils';
+import { jsonRpcRequest } from '../../../../../shared/modules/rpc.utils';
const FORM_STATE_KEYS = [
'rpcUrl',
diff --git a/ui/app/pages/settings/networks-tab/networks-tab.component.js b/ui/pages/settings/networks-tab/networks-tab.component.js
similarity index 99%
rename from ui/app/pages/settings/networks-tab/networks-tab.component.js
rename to ui/pages/settings/networks-tab/networks-tab.component.js
index f62a40790..e4fb230c7 100644
--- a/ui/app/pages/settings/networks-tab/networks-tab.component.js
+++ b/ui/pages/settings/networks-tab/networks-tab.component.js
@@ -1,7 +1,7 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
-import { NETWORK_TYPE_RPC } from '../../../../../shared/constants/network';
+import { NETWORK_TYPE_RPC } from '../../../../shared/constants/network';
import Button from '../../../components/ui/button';
import LockIcon from '../../../components/ui/lock-icon';
import {
diff --git a/ui/app/pages/settings/networks-tab/networks-tab.constants.js b/ui/pages/settings/networks-tab/networks-tab.constants.js
similarity index 96%
rename from ui/app/pages/settings/networks-tab/networks-tab.constants.js
rename to ui/pages/settings/networks-tab/networks-tab.constants.js
index 52f6514d7..91fdbe251 100644
--- a/ui/app/pages/settings/networks-tab/networks-tab.constants.js
+++ b/ui/pages/settings/networks-tab/networks-tab.constants.js
@@ -9,7 +9,7 @@ import {
RINKEBY_CHAIN_ID,
ROPSTEN,
ROPSTEN_CHAIN_ID,
-} from '../../../../../shared/constants/network';
+} from '../../../../shared/constants/network';
const defaultNetworksData = [
{
diff --git a/ui/app/pages/settings/networks-tab/networks-tab.container.js b/ui/pages/settings/networks-tab/networks-tab.container.js
similarity index 93%
rename from ui/app/pages/settings/networks-tab/networks-tab.container.js
rename to ui/pages/settings/networks-tab/networks-tab.container.js
index 75b637159..2878cbf11 100644
--- a/ui/app/pages/settings/networks-tab/networks-tab.container.js
+++ b/ui/pages/settings/networks-tab/networks-tab.container.js
@@ -10,9 +10,9 @@ import {
showModal,
} from '../../../store/actions';
import { NETWORKS_FORM_ROUTE } from '../../../helpers/constants/routes';
-import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../shared/constants/app';
-import { NETWORK_TYPE_RPC } from '../../../../../shared/constants/network';
-import { getEnvironmentType } from '../../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../shared/constants/app';
+import { NETWORK_TYPE_RPC } from '../../../../shared/constants/network';
+import { getEnvironmentType } from '../../../../app/scripts/lib/util';
import NetworksTab from './networks-tab.component';
import { defaultNetworksData } from './networks-tab.constants';
diff --git a/ui/app/pages/settings/security-tab/index.js b/ui/pages/settings/security-tab/index.js
similarity index 100%
rename from ui/app/pages/settings/security-tab/index.js
rename to ui/pages/settings/security-tab/index.js
diff --git a/ui/app/pages/settings/security-tab/security-tab.component.js b/ui/pages/settings/security-tab/security-tab.component.js
similarity index 100%
rename from ui/app/pages/settings/security-tab/security-tab.component.js
rename to ui/pages/settings/security-tab/security-tab.component.js
diff --git a/ui/app/pages/settings/security-tab/security-tab.container.js b/ui/pages/settings/security-tab/security-tab.container.js
similarity index 100%
rename from ui/app/pages/settings/security-tab/security-tab.container.js
rename to ui/pages/settings/security-tab/security-tab.container.js
diff --git a/ui/app/pages/settings/security-tab/security-tab.container.test.js b/ui/pages/settings/security-tab/security-tab.container.test.js
similarity index 100%
rename from ui/app/pages/settings/security-tab/security-tab.container.test.js
rename to ui/pages/settings/security-tab/security-tab.container.test.js
diff --git a/ui/app/pages/settings/settings-tab/index.js b/ui/pages/settings/settings-tab/index.js
similarity index 100%
rename from ui/app/pages/settings/settings-tab/index.js
rename to ui/pages/settings/settings-tab/index.js
diff --git a/ui/app/pages/settings/settings-tab/index.scss b/ui/pages/settings/settings-tab/index.scss
similarity index 100%
rename from ui/app/pages/settings/settings-tab/index.scss
rename to ui/pages/settings/settings-tab/index.scss
diff --git a/ui/app/pages/settings/settings-tab/settings-tab.component.js b/ui/pages/settings/settings-tab/settings-tab.component.js
similarity index 99%
rename from ui/app/pages/settings/settings-tab/settings-tab.component.js
rename to ui/pages/settings/settings-tab/settings-tab.component.js
index 71aae33a6..d40b446c2 100644
--- a/ui/app/pages/settings/settings-tab/settings-tab.component.js
+++ b/ui/pages/settings/settings-tab/settings-tab.component.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import availableCurrencies from '../../../helpers/constants/available-conversions.json';
import Dropdown from '../../../components/ui/dropdown';
import ToggleButton from '../../../components/ui/toggle-button';
-import locales from '../../../../../app/_locales/index.json';
+import locales from '../../../../app/_locales/index.json';
const sortedCurrencies = availableCurrencies.sort((a, b) => {
return a.name.toLocaleLowerCase().localeCompare(b.name.toLocaleLowerCase());
diff --git a/ui/app/pages/settings/settings-tab/settings-tab.container.js b/ui/pages/settings/settings-tab/settings-tab.container.js
similarity index 100%
rename from ui/app/pages/settings/settings-tab/settings-tab.container.js
rename to ui/pages/settings/settings-tab/settings-tab.container.js
diff --git a/ui/app/pages/settings/settings-tab/settings-tab.container.test.js b/ui/pages/settings/settings-tab/settings-tab.container.test.js
similarity index 100%
rename from ui/app/pages/settings/settings-tab/settings-tab.container.test.js
rename to ui/pages/settings/settings-tab/settings-tab.container.test.js
diff --git a/ui/app/pages/settings/settings.component.js b/ui/pages/settings/settings.component.js
similarity index 100%
rename from ui/app/pages/settings/settings.component.js
rename to ui/pages/settings/settings.component.js
diff --git a/ui/app/pages/settings/settings.container.js b/ui/pages/settings/settings.container.js
similarity index 92%
rename from ui/app/pages/settings/settings.container.js
rename to ui/pages/settings/settings.container.js
index 1121c4755..bf428c4fc 100644
--- a/ui/app/pages/settings/settings.container.js
+++ b/ui/pages/settings/settings.container.js
@@ -2,13 +2,13 @@ import { compose } from 'redux';
import { connect } from 'react-redux';
import { withRouter } from 'react-router-dom';
import { getAddressBookEntryName } from '../../selectors';
-import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_POPUP } from '../../../shared/constants/app';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
import { getMostRecentOverviewPage } from '../../ducks/history/history';
import {
isValidHexAddress,
isBurnAddress,
-} from '../../../../shared/modules/hexstring-utils';
+} from '../../../shared/modules/hexstring-utils';
import {
ABOUT_US_ROUTE,
diff --git a/ui/app/pages/swaps/__snapshots__/index.test.js.snap b/ui/pages/swaps/__snapshots__/index.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/__snapshots__/index.test.js.snap
rename to ui/pages/swaps/__snapshots__/index.test.js.snap
diff --git a/ui/app/pages/swaps/actionable-message/__snapshots__/actionable-message.test.js.snap b/ui/pages/swaps/actionable-message/__snapshots__/actionable-message.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/actionable-message/__snapshots__/actionable-message.test.js.snap
rename to ui/pages/swaps/actionable-message/__snapshots__/actionable-message.test.js.snap
diff --git a/ui/app/pages/swaps/actionable-message/actionable-message.js b/ui/pages/swaps/actionable-message/actionable-message.js
similarity index 100%
rename from ui/app/pages/swaps/actionable-message/actionable-message.js
rename to ui/pages/swaps/actionable-message/actionable-message.js
diff --git a/ui/app/pages/swaps/actionable-message/actionable-message.stories.js b/ui/pages/swaps/actionable-message/actionable-message.stories.js
similarity index 100%
rename from ui/app/pages/swaps/actionable-message/actionable-message.stories.js
rename to ui/pages/swaps/actionable-message/actionable-message.stories.js
diff --git a/ui/app/pages/swaps/actionable-message/actionable-message.test.js b/ui/pages/swaps/actionable-message/actionable-message.test.js
similarity index 89%
rename from ui/app/pages/swaps/actionable-message/actionable-message.test.js
rename to ui/pages/swaps/actionable-message/actionable-message.test.js
index 6074f4576..aeae55104 100644
--- a/ui/app/pages/swaps/actionable-message/actionable-message.test.js
+++ b/ui/pages/swaps/actionable-message/actionable-message.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import ActionableMessage from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/actionable-message/index.js b/ui/pages/swaps/actionable-message/index.js
similarity index 100%
rename from ui/app/pages/swaps/actionable-message/index.js
rename to ui/pages/swaps/actionable-message/index.js
diff --git a/ui/app/pages/swaps/actionable-message/index.scss b/ui/pages/swaps/actionable-message/index.scss
similarity index 100%
rename from ui/app/pages/swaps/actionable-message/index.scss
rename to ui/pages/swaps/actionable-message/index.scss
diff --git a/ui/app/pages/swaps/awaiting-swap/__snapshots__/awaiting-swap.test.js.snap b/ui/pages/swaps/awaiting-swap/__snapshots__/awaiting-swap.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/__snapshots__/awaiting-swap.test.js.snap
rename to ui/pages/swaps/awaiting-swap/__snapshots__/awaiting-swap.test.js.snap
diff --git a/ui/app/pages/swaps/awaiting-swap/__snapshots__/quotes-timeout-icon.test.js.snap b/ui/pages/swaps/awaiting-swap/__snapshots__/quotes-timeout-icon.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/__snapshots__/quotes-timeout-icon.test.js.snap
rename to ui/pages/swaps/awaiting-swap/__snapshots__/quotes-timeout-icon.test.js.snap
diff --git a/ui/app/pages/swaps/awaiting-swap/__snapshots__/swap-failure-icon.test.js.snap b/ui/pages/swaps/awaiting-swap/__snapshots__/swap-failure-icon.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/__snapshots__/swap-failure-icon.test.js.snap
rename to ui/pages/swaps/awaiting-swap/__snapshots__/swap-failure-icon.test.js.snap
diff --git a/ui/app/pages/swaps/awaiting-swap/__snapshots__/swap-success-icon.test.js.snap b/ui/pages/swaps/awaiting-swap/__snapshots__/swap-success-icon.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/__snapshots__/swap-success-icon.test.js.snap
rename to ui/pages/swaps/awaiting-swap/__snapshots__/swap-success-icon.test.js.snap
diff --git a/ui/app/pages/swaps/awaiting-swap/awaiting-swap.js b/ui/pages/swaps/awaiting-swap/awaiting-swap.js
similarity index 97%
rename from ui/app/pages/swaps/awaiting-swap/awaiting-swap.js
rename to ui/pages/swaps/awaiting-swap/awaiting-swap.js
index af21ce29b..c777ea198 100644
--- a/ui/app/pages/swaps/awaiting-swap/awaiting-swap.js
+++ b/ui/pages/swaps/awaiting-swap/awaiting-swap.js
@@ -33,16 +33,16 @@ import {
QUOTES_NOT_AVAILABLE_ERROR,
OFFLINE_FOR_MAINTENANCE,
SWAPS_CHAINID_DEFAULT_BLOCK_EXPLORER_URL_MAP,
-} from '../../../../../shared/constants/swaps';
-import { CHAIN_ID_TO_TYPE_MAP as VALID_INFURA_CHAIN_IDS } from '../../../../../shared/constants/network';
-import { isSwapsDefaultTokenSymbol } from '../../../../../shared/modules/swaps.utils';
+} from '../../../../shared/constants/swaps';
+import { CHAIN_ID_TO_TYPE_MAP as VALID_INFURA_CHAIN_IDS } from '../../../../shared/constants/network';
+import { isSwapsDefaultTokenSymbol } from '../../../../shared/modules/swaps.utils';
import PulseLoader from '../../../components/ui/pulse-loader';
import { ASSET_ROUTE, DEFAULT_ROUTE } from '../../../helpers/constants/routes';
import { getRenderableNetworkFeesForQuote } from '../swaps.util';
import SwapsFooter from '../swaps-footer';
-import { getBlockExplorerUrlForTx } from '../../../../../shared/modules/transaction.utils';
+import { getBlockExplorerUrlForTx } from '../../../../shared/modules/transaction.utils';
import SwapFailureIcon from './swap-failure-icon';
import SwapSuccessIcon from './swap-success-icon';
diff --git a/ui/app/pages/swaps/awaiting-swap/awaiting-swap.test.js b/ui/pages/swaps/awaiting-swap/awaiting-swap.test.js
similarity index 96%
rename from ui/app/pages/swaps/awaiting-swap/awaiting-swap.test.js
rename to ui/pages/swaps/awaiting-swap/awaiting-swap.test.js
index 396bcfb51..af9850752 100644
--- a/ui/app/pages/swaps/awaiting-swap/awaiting-swap.test.js
+++ b/ui/pages/swaps/awaiting-swap/awaiting-swap.test.js
@@ -4,7 +4,7 @@ import configureMockStore from 'redux-mock-store';
import {
renderWithProvider,
createSwapsMockStore,
-} from '../../../../../test/jest';
+} from '../../../../test/jest';
import AwaitingSwap from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/awaiting-swap/index.js b/ui/pages/swaps/awaiting-swap/index.js
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/index.js
rename to ui/pages/swaps/awaiting-swap/index.js
diff --git a/ui/app/pages/swaps/awaiting-swap/index.scss b/ui/pages/swaps/awaiting-swap/index.scss
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/index.scss
rename to ui/pages/swaps/awaiting-swap/index.scss
diff --git a/ui/app/pages/swaps/awaiting-swap/quotes-timeout-icon.js b/ui/pages/swaps/awaiting-swap/quotes-timeout-icon.js
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/quotes-timeout-icon.js
rename to ui/pages/swaps/awaiting-swap/quotes-timeout-icon.js
diff --git a/ui/app/pages/swaps/awaiting-swap/quotes-timeout-icon.test.js b/ui/pages/swaps/awaiting-swap/quotes-timeout-icon.test.js
similarity index 81%
rename from ui/app/pages/swaps/awaiting-swap/quotes-timeout-icon.test.js
rename to ui/pages/swaps/awaiting-swap/quotes-timeout-icon.test.js
index 6afc922ef..12f2adf45 100644
--- a/ui/app/pages/swaps/awaiting-swap/quotes-timeout-icon.test.js
+++ b/ui/pages/swaps/awaiting-swap/quotes-timeout-icon.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import QuotesTimeoutIcon from './quotes-timeout-icon';
describe('QuotesTimeoutIcon', () => {
diff --git a/ui/app/pages/swaps/awaiting-swap/swap-failure-icon.js b/ui/pages/swaps/awaiting-swap/swap-failure-icon.js
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/swap-failure-icon.js
rename to ui/pages/swaps/awaiting-swap/swap-failure-icon.js
diff --git a/ui/app/pages/swaps/awaiting-swap/swap-failure-icon.test.js b/ui/pages/swaps/awaiting-swap/swap-failure-icon.test.js
similarity index 81%
rename from ui/app/pages/swaps/awaiting-swap/swap-failure-icon.test.js
rename to ui/pages/swaps/awaiting-swap/swap-failure-icon.test.js
index be75020f8..02af2db06 100644
--- a/ui/app/pages/swaps/awaiting-swap/swap-failure-icon.test.js
+++ b/ui/pages/swaps/awaiting-swap/swap-failure-icon.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import SwapFailureIcon from './swap-failure-icon';
describe('SwapFailureIcon', () => {
diff --git a/ui/app/pages/swaps/awaiting-swap/swap-success-icon.js b/ui/pages/swaps/awaiting-swap/swap-success-icon.js
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/swap-success-icon.js
rename to ui/pages/swaps/awaiting-swap/swap-success-icon.js
diff --git a/ui/app/pages/swaps/awaiting-swap/swap-success-icon.test.js b/ui/pages/swaps/awaiting-swap/swap-success-icon.test.js
similarity index 81%
rename from ui/app/pages/swaps/awaiting-swap/swap-success-icon.test.js
rename to ui/pages/swaps/awaiting-swap/swap-success-icon.test.js
index 39d9eed12..4e735f158 100644
--- a/ui/app/pages/swaps/awaiting-swap/swap-success-icon.test.js
+++ b/ui/pages/swaps/awaiting-swap/swap-success-icon.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import SwapSuccessIcon from './swap-success-icon';
describe('SwapSuccessIcon', () => {
diff --git a/ui/app/pages/swaps/awaiting-swap/view-on-ether-scan-link/__snapshots__/view-on-ether-scan-link.test.js.snap b/ui/pages/swaps/awaiting-swap/view-on-ether-scan-link/__snapshots__/view-on-ether-scan-link.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/view-on-ether-scan-link/__snapshots__/view-on-ether-scan-link.test.js.snap
rename to ui/pages/swaps/awaiting-swap/view-on-ether-scan-link/__snapshots__/view-on-ether-scan-link.test.js.snap
diff --git a/ui/app/pages/swaps/awaiting-swap/view-on-ether-scan-link/index.js b/ui/pages/swaps/awaiting-swap/view-on-ether-scan-link/index.js
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/view-on-ether-scan-link/index.js
rename to ui/pages/swaps/awaiting-swap/view-on-ether-scan-link/index.js
diff --git a/ui/app/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.js b/ui/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.js
similarity index 100%
rename from ui/app/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.js
rename to ui/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.js
diff --git a/ui/app/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.test.js b/ui/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.test.js
similarity index 94%
rename from ui/app/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.test.js
rename to ui/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.test.js
index 0eb8a4dc7..91e32b82c 100644
--- a/ui/app/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.test.js
+++ b/ui/pages/swaps/awaiting-swap/view-on-ether-scan-link/view-on-ether-scan-link.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../../test/jest';
+import { renderWithProvider } from '../../../../../test/jest';
import ViewOnEtherScanLink from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/build-quote/__snapshots__/build-quote.test.js.snap b/ui/pages/swaps/build-quote/__snapshots__/build-quote.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/build-quote/__snapshots__/build-quote.test.js.snap
rename to ui/pages/swaps/build-quote/__snapshots__/build-quote.test.js.snap
diff --git a/ui/app/pages/swaps/build-quote/build-quote.js b/ui/pages/swaps/build-quote/build-quote.js
similarity index 99%
rename from ui/app/pages/swaps/build-quote/build-quote.js
rename to ui/pages/swaps/build-quote/build-quote.js
index d93ab6a9b..22ed85d30 100644
--- a/ui/app/pages/swaps/build-quote/build-quote.js
+++ b/ui/pages/swaps/build-quote/build-quote.js
@@ -53,8 +53,8 @@ import { useEthFiatAmount } from '../../../hooks/useEthFiatAmount';
import {
isSwapsDefaultTokenAddress,
isSwapsDefaultTokenSymbol,
-} from '../../../../../shared/modules/swaps.utils';
-import { SWAPS_CHAINID_DEFAULT_BLOCK_EXPLORER_URL_MAP } from '../../../../../shared/constants/swaps';
+} from '../../../../shared/modules/swaps.utils';
+import { SWAPS_CHAINID_DEFAULT_BLOCK_EXPLORER_URL_MAP } from '../../../../shared/constants/swaps';
import { resetSwapsPostFetchState, removeToken } from '../../../store/actions';
import { fetchTokenPrice, fetchTokenBalance } from '../swaps.util';
diff --git a/ui/app/pages/swaps/build-quote/build-quote.stories.js b/ui/pages/swaps/build-quote/build-quote.stories.js
similarity index 100%
rename from ui/app/pages/swaps/build-quote/build-quote.stories.js
rename to ui/pages/swaps/build-quote/build-quote.stories.js
diff --git a/ui/app/pages/swaps/build-quote/build-quote.test.js b/ui/pages/swaps/build-quote/build-quote.test.js
similarity index 97%
rename from ui/app/pages/swaps/build-quote/build-quote.test.js
rename to ui/pages/swaps/build-quote/build-quote.test.js
index d27990687..960489281 100644
--- a/ui/app/pages/swaps/build-quote/build-quote.test.js
+++ b/ui/pages/swaps/build-quote/build-quote.test.js
@@ -6,7 +6,7 @@ import {
renderWithProvider,
createSwapsMockStore,
setBackgroundConnection,
-} from '../../../../../test/jest';
+} from '../../../../test/jest';
import BuildQuote from '.';
const middleware = [thunk];
diff --git a/ui/app/pages/swaps/build-quote/index.js b/ui/pages/swaps/build-quote/index.js
similarity index 100%
rename from ui/app/pages/swaps/build-quote/index.js
rename to ui/pages/swaps/build-quote/index.js
diff --git a/ui/app/pages/swaps/build-quote/index.scss b/ui/pages/swaps/build-quote/index.scss
similarity index 100%
rename from ui/app/pages/swaps/build-quote/index.scss
rename to ui/pages/swaps/build-quote/index.scss
diff --git a/ui/app/pages/swaps/countdown-timer/countdown-timer.js b/ui/pages/swaps/countdown-timer/countdown-timer.js
similarity index 100%
rename from ui/app/pages/swaps/countdown-timer/countdown-timer.js
rename to ui/pages/swaps/countdown-timer/countdown-timer.js
diff --git a/ui/app/pages/swaps/countdown-timer/countdown-timer.stories.js b/ui/pages/swaps/countdown-timer/countdown-timer.stories.js
similarity index 100%
rename from ui/app/pages/swaps/countdown-timer/countdown-timer.stories.js
rename to ui/pages/swaps/countdown-timer/countdown-timer.stories.js
diff --git a/ui/app/pages/swaps/countdown-timer/countdown-timer.test.js b/ui/pages/swaps/countdown-timer/countdown-timer.test.js
similarity index 95%
rename from ui/app/pages/swaps/countdown-timer/countdown-timer.test.js
rename to ui/pages/swaps/countdown-timer/countdown-timer.test.js
index ad6697f3a..49f37dcd6 100644
--- a/ui/app/pages/swaps/countdown-timer/countdown-timer.test.js
+++ b/ui/pages/swaps/countdown-timer/countdown-timer.test.js
@@ -4,7 +4,7 @@ import configureMockStore from 'redux-mock-store';
import {
renderWithProvider,
createSwapsMockStore,
-} from '../../../../../test/jest';
+} from '../../../../test/jest';
import CountdownTimer from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/countdown-timer/index.js b/ui/pages/swaps/countdown-timer/index.js
similarity index 100%
rename from ui/app/pages/swaps/countdown-timer/index.js
rename to ui/pages/swaps/countdown-timer/index.js
diff --git a/ui/app/pages/swaps/countdown-timer/index.scss b/ui/pages/swaps/countdown-timer/index.scss
similarity index 100%
rename from ui/app/pages/swaps/countdown-timer/index.scss
rename to ui/pages/swaps/countdown-timer/index.scss
diff --git a/ui/app/pages/swaps/dropdown-input-pair/__snapshots__/dropdown-input-pair.test.js.snap b/ui/pages/swaps/dropdown-input-pair/__snapshots__/dropdown-input-pair.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/dropdown-input-pair/__snapshots__/dropdown-input-pair.test.js.snap
rename to ui/pages/swaps/dropdown-input-pair/__snapshots__/dropdown-input-pair.test.js.snap
diff --git a/ui/app/pages/swaps/dropdown-input-pair/dropdown-input-pair.js b/ui/pages/swaps/dropdown-input-pair/dropdown-input-pair.js
similarity index 100%
rename from ui/app/pages/swaps/dropdown-input-pair/dropdown-input-pair.js
rename to ui/pages/swaps/dropdown-input-pair/dropdown-input-pair.js
diff --git a/ui/app/pages/swaps/dropdown-input-pair/dropdown-input-pair.stories.js b/ui/pages/swaps/dropdown-input-pair/dropdown-input-pair.stories.js
similarity index 100%
rename from ui/app/pages/swaps/dropdown-input-pair/dropdown-input-pair.stories.js
rename to ui/pages/swaps/dropdown-input-pair/dropdown-input-pair.stories.js
diff --git a/ui/app/pages/swaps/dropdown-input-pair/dropdown-input-pair.test.js b/ui/pages/swaps/dropdown-input-pair/dropdown-input-pair.test.js
similarity index 89%
rename from ui/app/pages/swaps/dropdown-input-pair/dropdown-input-pair.test.js
rename to ui/pages/swaps/dropdown-input-pair/dropdown-input-pair.test.js
index 69420a56c..92a7024a0 100644
--- a/ui/app/pages/swaps/dropdown-input-pair/dropdown-input-pair.test.js
+++ b/ui/pages/swaps/dropdown-input-pair/dropdown-input-pair.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import DropdownInputPair from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/dropdown-input-pair/index.js b/ui/pages/swaps/dropdown-input-pair/index.js
similarity index 100%
rename from ui/app/pages/swaps/dropdown-input-pair/index.js
rename to ui/pages/swaps/dropdown-input-pair/index.js
diff --git a/ui/app/pages/swaps/dropdown-input-pair/index.scss b/ui/pages/swaps/dropdown-input-pair/index.scss
similarity index 100%
rename from ui/app/pages/swaps/dropdown-input-pair/index.scss
rename to ui/pages/swaps/dropdown-input-pair/index.scss
diff --git a/ui/app/pages/swaps/dropdown-search-list/__snapshots__/dropdown-search-list.test.js.snap b/ui/pages/swaps/dropdown-search-list/__snapshots__/dropdown-search-list.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/dropdown-search-list/__snapshots__/dropdown-search-list.test.js.snap
rename to ui/pages/swaps/dropdown-search-list/__snapshots__/dropdown-search-list.test.js.snap
diff --git a/ui/app/pages/swaps/dropdown-search-list/dropdown-search-list.js b/ui/pages/swaps/dropdown-search-list/dropdown-search-list.js
similarity index 100%
rename from ui/app/pages/swaps/dropdown-search-list/dropdown-search-list.js
rename to ui/pages/swaps/dropdown-search-list/dropdown-search-list.js
diff --git a/ui/app/pages/swaps/dropdown-search-list/dropdown-search-list.stories.js b/ui/pages/swaps/dropdown-search-list/dropdown-search-list.stories.js
similarity index 100%
rename from ui/app/pages/swaps/dropdown-search-list/dropdown-search-list.stories.js
rename to ui/pages/swaps/dropdown-search-list/dropdown-search-list.stories.js
diff --git a/ui/app/pages/swaps/dropdown-search-list/dropdown-search-list.test.js b/ui/pages/swaps/dropdown-search-list/dropdown-search-list.test.js
similarity index 89%
rename from ui/app/pages/swaps/dropdown-search-list/dropdown-search-list.test.js
rename to ui/pages/swaps/dropdown-search-list/dropdown-search-list.test.js
index 70f0e6a68..a14bc989f 100644
--- a/ui/app/pages/swaps/dropdown-search-list/dropdown-search-list.test.js
+++ b/ui/pages/swaps/dropdown-search-list/dropdown-search-list.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import DropdownSearchList from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/dropdown-search-list/index.js b/ui/pages/swaps/dropdown-search-list/index.js
similarity index 100%
rename from ui/app/pages/swaps/dropdown-search-list/index.js
rename to ui/pages/swaps/dropdown-search-list/index.js
diff --git a/ui/app/pages/swaps/dropdown-search-list/index.scss b/ui/pages/swaps/dropdown-search-list/index.scss
similarity index 100%
rename from ui/app/pages/swaps/dropdown-search-list/index.scss
rename to ui/pages/swaps/dropdown-search-list/index.scss
diff --git a/ui/app/pages/swaps/exchange-rate-display/__snapshots__/exchange-rate-display.test.js.snap b/ui/pages/swaps/exchange-rate-display/__snapshots__/exchange-rate-display.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/exchange-rate-display/__snapshots__/exchange-rate-display.test.js.snap
rename to ui/pages/swaps/exchange-rate-display/__snapshots__/exchange-rate-display.test.js.snap
diff --git a/ui/app/pages/swaps/exchange-rate-display/exchange-rate-display.js b/ui/pages/swaps/exchange-rate-display/exchange-rate-display.js
similarity index 100%
rename from ui/app/pages/swaps/exchange-rate-display/exchange-rate-display.js
rename to ui/pages/swaps/exchange-rate-display/exchange-rate-display.js
diff --git a/ui/app/pages/swaps/exchange-rate-display/exchange-rate-display.stories.js b/ui/pages/swaps/exchange-rate-display/exchange-rate-display.stories.js
similarity index 100%
rename from ui/app/pages/swaps/exchange-rate-display/exchange-rate-display.stories.js
rename to ui/pages/swaps/exchange-rate-display/exchange-rate-display.stories.js
diff --git a/ui/app/pages/swaps/exchange-rate-display/exchange-rate-display.test.js b/ui/pages/swaps/exchange-rate-display/exchange-rate-display.test.js
similarity index 92%
rename from ui/app/pages/swaps/exchange-rate-display/exchange-rate-display.test.js
rename to ui/pages/swaps/exchange-rate-display/exchange-rate-display.test.js
index b0aa8db60..9dc224206 100644
--- a/ui/app/pages/swaps/exchange-rate-display/exchange-rate-display.test.js
+++ b/ui/pages/swaps/exchange-rate-display/exchange-rate-display.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import ExchangeRateDisplay from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/exchange-rate-display/index.js b/ui/pages/swaps/exchange-rate-display/index.js
similarity index 100%
rename from ui/app/pages/swaps/exchange-rate-display/index.js
rename to ui/pages/swaps/exchange-rate-display/index.js
diff --git a/ui/app/pages/swaps/exchange-rate-display/index.scss b/ui/pages/swaps/exchange-rate-display/index.scss
similarity index 100%
rename from ui/app/pages/swaps/exchange-rate-display/index.scss
rename to ui/pages/swaps/exchange-rate-display/index.scss
diff --git a/ui/app/pages/swaps/fee-card/__snapshots__/fee-card.test.js.snap b/ui/pages/swaps/fee-card/__snapshots__/fee-card.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/fee-card/__snapshots__/fee-card.test.js.snap
rename to ui/pages/swaps/fee-card/__snapshots__/fee-card.test.js.snap
diff --git a/ui/app/pages/swaps/fee-card/fee-card.js b/ui/pages/swaps/fee-card/fee-card.js
similarity index 99%
rename from ui/app/pages/swaps/fee-card/fee-card.js
rename to ui/pages/swaps/fee-card/fee-card.js
index 23bb545f9..68ee4faec 100644
--- a/ui/app/pages/swaps/fee-card/fee-card.js
+++ b/ui/pages/swaps/fee-card/fee-card.js
@@ -6,7 +6,7 @@ import {
MAINNET_CHAIN_ID,
BSC_CHAIN_ID,
LOCALHOST_CHAIN_ID,
-} from '../../../../../shared/constants/network';
+} from '../../../../shared/constants/network';
export default function FeeCard({
primaryFee,
diff --git a/ui/app/pages/swaps/fee-card/fee-card.stories.js b/ui/pages/swaps/fee-card/fee-card.stories.js
similarity index 100%
rename from ui/app/pages/swaps/fee-card/fee-card.stories.js
rename to ui/pages/swaps/fee-card/fee-card.stories.js
diff --git a/ui/app/pages/swaps/fee-card/fee-card.test.js b/ui/pages/swaps/fee-card/fee-card.test.js
similarity index 92%
rename from ui/app/pages/swaps/fee-card/fee-card.test.js
rename to ui/pages/swaps/fee-card/fee-card.test.js
index 15c8b0c33..7a81e4903 100644
--- a/ui/app/pages/swaps/fee-card/fee-card.test.js
+++ b/ui/pages/swaps/fee-card/fee-card.test.js
@@ -1,7 +1,7 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
-import { MAINNET_CHAIN_ID } from '../../../../../shared/constants/network';
+import { renderWithProvider } from '../../../../test/jest';
+import { MAINNET_CHAIN_ID } from '../../../../shared/constants/network';
import FeeCard from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/fee-card/index.js b/ui/pages/swaps/fee-card/index.js
similarity index 100%
rename from ui/app/pages/swaps/fee-card/index.js
rename to ui/pages/swaps/fee-card/index.js
diff --git a/ui/app/pages/swaps/fee-card/index.scss b/ui/pages/swaps/fee-card/index.scss
similarity index 100%
rename from ui/app/pages/swaps/fee-card/index.scss
rename to ui/pages/swaps/fee-card/index.scss
diff --git a/ui/app/pages/swaps/fee-card/pig-icon.js b/ui/pages/swaps/fee-card/pig-icon.js
similarity index 100%
rename from ui/app/pages/swaps/fee-card/pig-icon.js
rename to ui/pages/swaps/fee-card/pig-icon.js
diff --git a/ui/app/pages/swaps/fee-card/pig-icon.test.js b/ui/pages/swaps/fee-card/pig-icon.test.js
similarity index 80%
rename from ui/app/pages/swaps/fee-card/pig-icon.test.js
rename to ui/pages/swaps/fee-card/pig-icon.test.js
index 7764681b8..6321b7dc6 100644
--- a/ui/app/pages/swaps/fee-card/pig-icon.test.js
+++ b/ui/pages/swaps/fee-card/pig-icon.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import PigIcon from './pig-icon';
describe('PigIcon', () => {
diff --git a/ui/app/pages/swaps/index.js b/ui/pages/swaps/index.js
similarity index 99%
rename from ui/app/pages/swaps/index.js
rename to ui/pages/swaps/index.js
index 7af7b83b1..bf5dfb17f 100644
--- a/ui/app/pages/swaps/index.js
+++ b/ui/pages/swaps/index.js
@@ -46,7 +46,7 @@ import {
QUOTES_NOT_AVAILABLE_ERROR,
SWAP_FAILED_ERROR,
OFFLINE_FOR_MAINTENANCE,
-} from '../../../../shared/constants/swaps';
+} from '../../../shared/constants/swaps';
import {
resetBackgroundSwapsState,
@@ -59,7 +59,7 @@ import { currentNetworkTxListSelector } from '../../selectors';
import { useNewMetricEvent } from '../../hooks/useMetricEvent';
import FeatureToggledRoute from '../../helpers/higher-order-components/feature-toggled-route';
-import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction';
+import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
import {
fetchTokens,
fetchTopAssets,
diff --git a/ui/app/pages/swaps/index.scss b/ui/pages/swaps/index.scss
similarity index 100%
rename from ui/app/pages/swaps/index.scss
rename to ui/pages/swaps/index.scss
diff --git a/ui/app/pages/swaps/index.test.js b/ui/pages/swaps/index.test.js
similarity index 98%
rename from ui/app/pages/swaps/index.test.js
rename to ui/pages/swaps/index.test.js
index fc47e01bf..a3162ae2a 100644
--- a/ui/app/pages/swaps/index.test.js
+++ b/ui/pages/swaps/index.test.js
@@ -10,7 +10,7 @@ import {
setBackgroundConnection,
MOCKS,
CONSTANTS,
-} from '../../../../test/jest';
+} from '../../../test/jest';
import Swap from '.';
const middleware = [thunk];
diff --git a/ui/pages/swaps/intro-popup/__snapshots__/intro-popup.test.js.snap b/ui/pages/swaps/intro-popup/__snapshots__/intro-popup.test.js.snap
new file mode 100644
index 000000000..d9d0324df
--- /dev/null
+++ b/ui/pages/swaps/intro-popup/__snapshots__/intro-popup.test.js.snap
@@ -0,0 +1,9 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`IntroPopup renders the component with initial props 1`] = `
+
+
+
+`;
diff --git a/ui/pages/swaps/intro-popup/index.js b/ui/pages/swaps/intro-popup/index.js
new file mode 100644
index 000000000..6460538b9
--- /dev/null
+++ b/ui/pages/swaps/intro-popup/index.js
@@ -0,0 +1 @@
+export { default } from './intro-popup';
diff --git a/ui/pages/swaps/intro-popup/index.scss b/ui/pages/swaps/intro-popup/index.scss
new file mode 100644
index 000000000..48d79c5f9
--- /dev/null
+++ b/ui/pages/swaps/intro-popup/index.scss
@@ -0,0 +1,71 @@
+.intro-popup {
+ &__liquidity-sources-label {
+ @include H7;
+
+ font-weight: bold;
+ margin-bottom: 6px;
+ color: $Black-100;
+
+ @media screen and (min-width: 576px) {
+ @include H6;
+ }
+ }
+
+ &__learn-more-header {
+ @include H4;
+
+ font-weight: bold;
+ margin-bottom: 12px;
+ margin-top: 16px;
+ }
+
+ &__learn-more-link {
+ @include H6;
+
+ color: $Blue-500;
+ margin-bottom: 8px;
+ cursor: pointer;
+ }
+
+ &__content {
+ margin-left: 24px;
+
+ > img {
+ width: 96%;
+ margin-left: -9px;
+ }
+ }
+
+ &__footer {
+ border-top: none;
+ }
+
+ &__button {
+ border-radius: 100px;
+ height: 44px;
+ }
+
+ &__source-logo-container {
+ width: 276px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 20px 16px;
+ background: $Grey-000;
+ border-radius: 8px;
+
+ @media screen and (min-width: 576px) {
+ width: 412px;
+
+ img {
+ width: 364px;
+ }
+ }
+ }
+
+ &__popover {
+ @media screen and (min-width: 576px) {
+ width: 460px;
+ }
+ }
+}
diff --git a/ui/pages/swaps/intro-popup/intro-popup.js b/ui/pages/swaps/intro-popup/intro-popup.js
new file mode 100644
index 000000000..658c84bb9
--- /dev/null
+++ b/ui/pages/swaps/intro-popup/intro-popup.js
@@ -0,0 +1,108 @@
+import React, { useContext } from 'react';
+import { useDispatch, useSelector } from 'react-redux';
+import { useHistory } from 'react-router-dom';
+import PropTypes from 'prop-types';
+import { setSwapsFromToken } from '../../../ducks/swaps/swaps';
+import { I18nContext } from '../../../contexts/i18n';
+import { BUILD_QUOTE_ROUTE } from '../../../helpers/constants/routes';
+import { useNewMetricEvent } from '../../../hooks/useMetricEvent';
+import { getSwapsDefaultToken } from '../../../selectors';
+import Button from '../../../components/ui/button';
+import Popover from '../../../components/ui/popover';
+
+export default function IntroPopup({ onClose }) {
+ const dispatch = useDispatch(useDispatch);
+ const history = useHistory();
+ const t = useContext(I18nContext);
+
+ const swapsDefaultToken = useSelector(getSwapsDefaultToken);
+ const enteredSwapsEvent = useNewMetricEvent({
+ event: 'Swaps Opened',
+ properties: {
+ source: 'Intro popup',
+ active_currency: swapsDefaultToken.symbol,
+ },
+ category: 'swaps',
+ });
+ const blogPostVisitedEvent = useNewMetricEvent({
+ event: 'Blog Post Visited ',
+ category: 'swaps',
+ });
+ const contractAuditVisitedEvent = useNewMetricEvent({
+ event: 'Contract Audit Visited',
+ category: 'swaps',
+ });
+ const productOverviewDismissedEvent = useNewMetricEvent({
+ event: 'Product Overview Dismissed',
+ category: 'swaps',
+ });
+
+ return (
+
+
{
+ productOverviewDismissedEvent();
+ onClose();
+ }}
+ footerClassName="intro-popup__footer"
+ footer={
+
+ }
+ >
+
+
+ {t('swapIntroLiquiditySourcesLabel')}
+
+
+
+
+
+ {t('swapIntroLearnMoreHeader')}
+
+
{
+ global.platform.openTab({
+ url:
+ 'https://medium.com/metamask/introducing-metamask-swaps-84318c643785',
+ });
+ blogPostVisitedEvent();
+ }}
+ >
+ {t('swapIntroLearnMoreLink')}
+
+
{
+ global.platform.openTab({
+ url:
+ 'https://diligence.consensys.net/audits/private/lsjipyllnw2/',
+ });
+ contractAuditVisitedEvent();
+ }}
+ >
+ {t('swapLearnMoreContractsAuditReview')}
+
+
+
+
+ );
+}
+
+IntroPopup.propTypes = {
+ onClose: PropTypes.func.isRequired,
+};
diff --git a/ui/pages/swaps/intro-popup/intro-popup.test.js b/ui/pages/swaps/intro-popup/intro-popup.test.js
new file mode 100644
index 000000000..049c73091
--- /dev/null
+++ b/ui/pages/swaps/intro-popup/intro-popup.test.js
@@ -0,0 +1,24 @@
+import React from 'react';
+import configureMockStore from 'redux-mock-store';
+
+import {
+ renderWithProvider,
+ createSwapsMockStore,
+} from '../../../../test/jest';
+import IntroPopup from '.';
+
+const createProps = (customProps = {}) => {
+ return {
+ onClose: jest.fn(),
+ ...customProps,
+ };
+};
+
+describe('IntroPopup', () => {
+ it('renders the component with initial props', () => {
+ const store = configureMockStore()(createSwapsMockStore());
+ const props = createProps();
+ const { container } = renderWithProvider(, store);
+ expect(container).toMatchSnapshot();
+ });
+});
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/__snapshots__/aggregator-logo.test.js.snap b/ui/pages/swaps/loading-swaps-quotes/__snapshots__/aggregator-logo.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/loading-swaps-quotes/__snapshots__/aggregator-logo.test.js.snap
rename to ui/pages/swaps/loading-swaps-quotes/__snapshots__/aggregator-logo.test.js.snap
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/__snapshots__/loading-swaps-quotes-stories-metadata.test.js.snap b/ui/pages/swaps/loading-swaps-quotes/__snapshots__/loading-swaps-quotes-stories-metadata.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/loading-swaps-quotes/__snapshots__/loading-swaps-quotes-stories-metadata.test.js.snap
rename to ui/pages/swaps/loading-swaps-quotes/__snapshots__/loading-swaps-quotes-stories-metadata.test.js.snap
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/aggregator-logo.js b/ui/pages/swaps/loading-swaps-quotes/aggregator-logo.js
similarity index 100%
rename from ui/app/pages/swaps/loading-swaps-quotes/aggregator-logo.js
rename to ui/pages/swaps/loading-swaps-quotes/aggregator-logo.js
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/aggregator-logo.test.js b/ui/pages/swaps/loading-swaps-quotes/aggregator-logo.test.js
similarity index 98%
rename from ui/app/pages/swaps/loading-swaps-quotes/aggregator-logo.test.js
rename to ui/pages/swaps/loading-swaps-quotes/aggregator-logo.test.js
index fb81e33e6..3367316b6 100644
--- a/ui/app/pages/swaps/loading-swaps-quotes/aggregator-logo.test.js
+++ b/ui/pages/swaps/loading-swaps-quotes/aggregator-logo.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import AggregatorLogo from './aggregator-logo';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/background-animation.js b/ui/pages/swaps/loading-swaps-quotes/background-animation.js
similarity index 100%
rename from ui/app/pages/swaps/loading-swaps-quotes/background-animation.js
rename to ui/pages/swaps/loading-swaps-quotes/background-animation.js
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/background-animation.test.js b/ui/pages/swaps/loading-swaps-quotes/background-animation.test.js
similarity index 85%
rename from ui/app/pages/swaps/loading-swaps-quotes/background-animation.test.js
rename to ui/pages/swaps/loading-swaps-quotes/background-animation.test.js
index 64e31843e..f4601ddc6 100644
--- a/ui/app/pages/swaps/loading-swaps-quotes/background-animation.test.js
+++ b/ui/pages/swaps/loading-swaps-quotes/background-animation.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import BackgroundAnimation from './background-animation';
describe('BackgroundAnimation', () => {
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/index.js b/ui/pages/swaps/loading-swaps-quotes/index.js
similarity index 100%
rename from ui/app/pages/swaps/loading-swaps-quotes/index.js
rename to ui/pages/swaps/loading-swaps-quotes/index.js
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/index.scss b/ui/pages/swaps/loading-swaps-quotes/index.scss
similarity index 100%
rename from ui/app/pages/swaps/loading-swaps-quotes/index.scss
rename to ui/pages/swaps/loading-swaps-quotes/index.scss
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.js b/ui/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.js
similarity index 100%
rename from ui/app/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.js
rename to ui/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.js
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.test.js b/ui/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.test.js
similarity index 100%
rename from ui/app/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.test.js
rename to ui/pages/swaps/loading-swaps-quotes/loading-swaps-quotes-stories-metadata.test.js
diff --git a/ui/app/pages/swaps/loading-swaps-quotes/loading-swaps-quotes.js b/ui/pages/swaps/loading-swaps-quotes/loading-swaps-quotes.js
similarity index 100%
rename from ui/app/pages/swaps/loading-swaps-quotes/loading-swaps-quotes.js
rename to ui/pages/swaps/loading-swaps-quotes/loading-swaps-quotes.js
diff --git a/ui/app/pages/swaps/main-quote-summary/__snapshots__/main-quote-summary.test.js.snap b/ui/pages/swaps/main-quote-summary/__snapshots__/main-quote-summary.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/main-quote-summary/__snapshots__/main-quote-summary.test.js.snap
rename to ui/pages/swaps/main-quote-summary/__snapshots__/main-quote-summary.test.js.snap
diff --git a/ui/app/pages/swaps/main-quote-summary/__snapshots__/quote-backdrop.test.js.snap b/ui/pages/swaps/main-quote-summary/__snapshots__/quote-backdrop.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/main-quote-summary/__snapshots__/quote-backdrop.test.js.snap
rename to ui/pages/swaps/main-quote-summary/__snapshots__/quote-backdrop.test.js.snap
diff --git a/ui/app/pages/swaps/main-quote-summary/index.js b/ui/pages/swaps/main-quote-summary/index.js
similarity index 100%
rename from ui/app/pages/swaps/main-quote-summary/index.js
rename to ui/pages/swaps/main-quote-summary/index.js
diff --git a/ui/app/pages/swaps/main-quote-summary/index.scss b/ui/pages/swaps/main-quote-summary/index.scss
similarity index 100%
rename from ui/app/pages/swaps/main-quote-summary/index.scss
rename to ui/pages/swaps/main-quote-summary/index.scss
diff --git a/ui/app/pages/swaps/main-quote-summary/main-quote-summary.js b/ui/pages/swaps/main-quote-summary/main-quote-summary.js
similarity index 100%
rename from ui/app/pages/swaps/main-quote-summary/main-quote-summary.js
rename to ui/pages/swaps/main-quote-summary/main-quote-summary.js
diff --git a/ui/app/pages/swaps/main-quote-summary/main-quote-summary.stories.js b/ui/pages/swaps/main-quote-summary/main-quote-summary.stories.js
similarity index 100%
rename from ui/app/pages/swaps/main-quote-summary/main-quote-summary.stories.js
rename to ui/pages/swaps/main-quote-summary/main-quote-summary.stories.js
diff --git a/ui/app/pages/swaps/main-quote-summary/main-quote-summary.test.js b/ui/pages/swaps/main-quote-summary/main-quote-summary.test.js
similarity index 94%
rename from ui/app/pages/swaps/main-quote-summary/main-quote-summary.test.js
rename to ui/pages/swaps/main-quote-summary/main-quote-summary.test.js
index cc1775363..85e17bd48 100644
--- a/ui/app/pages/swaps/main-quote-summary/main-quote-summary.test.js
+++ b/ui/pages/swaps/main-quote-summary/main-quote-summary.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import MainQuoteSummary from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/main-quote-summary/quote-backdrop.js b/ui/pages/swaps/main-quote-summary/quote-backdrop.js
similarity index 100%
rename from ui/app/pages/swaps/main-quote-summary/quote-backdrop.js
rename to ui/pages/swaps/main-quote-summary/quote-backdrop.js
diff --git a/ui/app/pages/swaps/main-quote-summary/quote-backdrop.test.js b/ui/pages/swaps/main-quote-summary/quote-backdrop.test.js
similarity index 90%
rename from ui/app/pages/swaps/main-quote-summary/quote-backdrop.test.js
rename to ui/pages/swaps/main-quote-summary/quote-backdrop.test.js
index caab811ca..00d23c265 100644
--- a/ui/app/pages/swaps/main-quote-summary/quote-backdrop.test.js
+++ b/ui/pages/swaps/main-quote-summary/quote-backdrop.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import QuotesBackdrop from './quote-backdrop';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/searchable-item-list/__snapshots__/searchable-item-list.test.js.snap b/ui/pages/swaps/searchable-item-list/__snapshots__/searchable-item-list.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/searchable-item-list/__snapshots__/searchable-item-list.test.js.snap
rename to ui/pages/swaps/searchable-item-list/__snapshots__/searchable-item-list.test.js.snap
diff --git a/ui/app/pages/swaps/searchable-item-list/index.js b/ui/pages/swaps/searchable-item-list/index.js
similarity index 100%
rename from ui/app/pages/swaps/searchable-item-list/index.js
rename to ui/pages/swaps/searchable-item-list/index.js
diff --git a/ui/app/pages/swaps/searchable-item-list/index.scss b/ui/pages/swaps/searchable-item-list/index.scss
similarity index 100%
rename from ui/app/pages/swaps/searchable-item-list/index.scss
rename to ui/pages/swaps/searchable-item-list/index.scss
diff --git a/ui/app/pages/swaps/searchable-item-list/item-list/index.js b/ui/pages/swaps/searchable-item-list/item-list/index.js
similarity index 100%
rename from ui/app/pages/swaps/searchable-item-list/item-list/index.js
rename to ui/pages/swaps/searchable-item-list/item-list/index.js
diff --git a/ui/app/pages/swaps/searchable-item-list/item-list/item-list.component.js b/ui/pages/swaps/searchable-item-list/item-list/item-list.component.js
similarity index 100%
rename from ui/app/pages/swaps/searchable-item-list/item-list/item-list.component.js
rename to ui/pages/swaps/searchable-item-list/item-list/item-list.component.js
diff --git a/ui/app/pages/swaps/searchable-item-list/list-item-search/index.js b/ui/pages/swaps/searchable-item-list/list-item-search/index.js
similarity index 100%
rename from ui/app/pages/swaps/searchable-item-list/list-item-search/index.js
rename to ui/pages/swaps/searchable-item-list/list-item-search/index.js
diff --git a/ui/app/pages/swaps/searchable-item-list/list-item-search/list-item-search.component.js b/ui/pages/swaps/searchable-item-list/list-item-search/list-item-search.component.js
similarity index 100%
rename from ui/app/pages/swaps/searchable-item-list/list-item-search/list-item-search.component.js
rename to ui/pages/swaps/searchable-item-list/list-item-search/list-item-search.component.js
diff --git a/ui/app/pages/swaps/searchable-item-list/searchable-item-list.js b/ui/pages/swaps/searchable-item-list/searchable-item-list.js
similarity index 100%
rename from ui/app/pages/swaps/searchable-item-list/searchable-item-list.js
rename to ui/pages/swaps/searchable-item-list/searchable-item-list.js
diff --git a/ui/app/pages/swaps/searchable-item-list/searchable-item-list.test.js b/ui/pages/swaps/searchable-item-list/searchable-item-list.test.js
similarity index 96%
rename from ui/app/pages/swaps/searchable-item-list/searchable-item-list.test.js
rename to ui/pages/swaps/searchable-item-list/searchable-item-list.test.js
index ef9a3a016..c62272e54 100644
--- a/ui/app/pages/swaps/searchable-item-list/searchable-item-list.test.js
+++ b/ui/pages/swaps/searchable-item-list/searchable-item-list.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import SearchableItemList from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/select-quote-popover/__snapshots__/select-quote-popover.test.js.snap b/ui/pages/swaps/select-quote-popover/__snapshots__/select-quote-popover.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/__snapshots__/select-quote-popover.test.js.snap
rename to ui/pages/swaps/select-quote-popover/__snapshots__/select-quote-popover.test.js.snap
diff --git a/ui/app/pages/swaps/select-quote-popover/index.js b/ui/pages/swaps/select-quote-popover/index.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/index.js
rename to ui/pages/swaps/select-quote-popover/index.js
diff --git a/ui/app/pages/swaps/select-quote-popover/index.scss b/ui/pages/swaps/select-quote-popover/index.scss
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/index.scss
rename to ui/pages/swaps/select-quote-popover/index.scss
diff --git a/ui/app/pages/swaps/select-quote-popover/mock-quote-data.js b/ui/pages/swaps/select-quote-popover/mock-quote-data.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/mock-quote-data.js
rename to ui/pages/swaps/select-quote-popover/mock-quote-data.js
diff --git a/ui/app/pages/swaps/select-quote-popover/mock-quote-data.test.js b/ui/pages/swaps/select-quote-popover/mock-quote-data.test.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/mock-quote-data.test.js
rename to ui/pages/swaps/select-quote-popover/mock-quote-data.test.js
diff --git a/ui/app/pages/swaps/select-quote-popover/quote-details/index.js b/ui/pages/swaps/select-quote-popover/quote-details/index.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/quote-details/index.js
rename to ui/pages/swaps/select-quote-popover/quote-details/index.js
diff --git a/ui/app/pages/swaps/select-quote-popover/quote-details/index.scss b/ui/pages/swaps/select-quote-popover/quote-details/index.scss
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/quote-details/index.scss
rename to ui/pages/swaps/select-quote-popover/quote-details/index.scss
diff --git a/ui/app/pages/swaps/select-quote-popover/quote-details/quote-details.js b/ui/pages/swaps/select-quote-popover/quote-details/quote-details.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/quote-details/quote-details.js
rename to ui/pages/swaps/select-quote-popover/quote-details/quote-details.js
diff --git a/ui/app/pages/swaps/select-quote-popover/select-quote-popover-constants.js b/ui/pages/swaps/select-quote-popover/select-quote-popover-constants.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/select-quote-popover-constants.js
rename to ui/pages/swaps/select-quote-popover/select-quote-popover-constants.js
diff --git a/ui/app/pages/swaps/select-quote-popover/select-quote-popover.js b/ui/pages/swaps/select-quote-popover/select-quote-popover.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/select-quote-popover.js
rename to ui/pages/swaps/select-quote-popover/select-quote-popover.js
diff --git a/ui/app/pages/swaps/select-quote-popover/select-quote-popover.stories.js b/ui/pages/swaps/select-quote-popover/select-quote-popover.stories.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/select-quote-popover.stories.js
rename to ui/pages/swaps/select-quote-popover/select-quote-popover.stories.js
diff --git a/ui/app/pages/swaps/select-quote-popover/select-quote-popover.test.js b/ui/pages/swaps/select-quote-popover/select-quote-popover.test.js
similarity index 89%
rename from ui/app/pages/swaps/select-quote-popover/select-quote-popover.test.js
rename to ui/pages/swaps/select-quote-popover/select-quote-popover.test.js
index b23a35f68..1eaa99738 100644
--- a/ui/app/pages/swaps/select-quote-popover/select-quote-popover.test.js
+++ b/ui/pages/swaps/select-quote-popover/select-quote-popover.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import SelectQuotePopover from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/select-quote-popover/sort-list/__snapshots__/sort-list.test.js.snap b/ui/pages/swaps/select-quote-popover/sort-list/__snapshots__/sort-list.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/sort-list/__snapshots__/sort-list.test.js.snap
rename to ui/pages/swaps/select-quote-popover/sort-list/__snapshots__/sort-list.test.js.snap
diff --git a/ui/app/pages/swaps/select-quote-popover/sort-list/index.js b/ui/pages/swaps/select-quote-popover/sort-list/index.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/sort-list/index.js
rename to ui/pages/swaps/select-quote-popover/sort-list/index.js
diff --git a/ui/app/pages/swaps/select-quote-popover/sort-list/sort-list.js b/ui/pages/swaps/select-quote-popover/sort-list/sort-list.js
similarity index 100%
rename from ui/app/pages/swaps/select-quote-popover/sort-list/sort-list.js
rename to ui/pages/swaps/select-quote-popover/sort-list/sort-list.js
diff --git a/ui/app/pages/swaps/select-quote-popover/sort-list/sort-list.test.js b/ui/pages/swaps/select-quote-popover/sort-list/sort-list.test.js
similarity index 97%
rename from ui/app/pages/swaps/select-quote-popover/sort-list/sort-list.test.js
rename to ui/pages/swaps/select-quote-popover/sort-list/sort-list.test.js
index 57896b8e0..99e5a19e5 100644
--- a/ui/app/pages/swaps/select-quote-popover/sort-list/sort-list.test.js
+++ b/ui/pages/swaps/select-quote-popover/sort-list/sort-list.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../../test/jest';
+import { renderWithProvider } from '../../../../../test/jest';
import SortList from './sort-list';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/slippage-buttons/__snapshots__/slippage-buttons.test.js.snap b/ui/pages/swaps/slippage-buttons/__snapshots__/slippage-buttons.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/slippage-buttons/__snapshots__/slippage-buttons.test.js.snap
rename to ui/pages/swaps/slippage-buttons/__snapshots__/slippage-buttons.test.js.snap
diff --git a/ui/app/pages/swaps/slippage-buttons/index.js b/ui/pages/swaps/slippage-buttons/index.js
similarity index 100%
rename from ui/app/pages/swaps/slippage-buttons/index.js
rename to ui/pages/swaps/slippage-buttons/index.js
diff --git a/ui/app/pages/swaps/slippage-buttons/index.scss b/ui/pages/swaps/slippage-buttons/index.scss
similarity index 100%
rename from ui/app/pages/swaps/slippage-buttons/index.scss
rename to ui/pages/swaps/slippage-buttons/index.scss
diff --git a/ui/app/pages/swaps/slippage-buttons/slippage-buttons.js b/ui/pages/swaps/slippage-buttons/slippage-buttons.js
similarity index 100%
rename from ui/app/pages/swaps/slippage-buttons/slippage-buttons.js
rename to ui/pages/swaps/slippage-buttons/slippage-buttons.js
diff --git a/ui/app/pages/swaps/slippage-buttons/slippage-buttons.stories.js b/ui/pages/swaps/slippage-buttons/slippage-buttons.stories.js
similarity index 100%
rename from ui/app/pages/swaps/slippage-buttons/slippage-buttons.stories.js
rename to ui/pages/swaps/slippage-buttons/slippage-buttons.stories.js
diff --git a/ui/app/pages/swaps/slippage-buttons/slippage-buttons.test.js b/ui/pages/swaps/slippage-buttons/slippage-buttons.test.js
similarity index 93%
rename from ui/app/pages/swaps/slippage-buttons/slippage-buttons.test.js
rename to ui/pages/swaps/slippage-buttons/slippage-buttons.test.js
index 0108f07d2..60ceeff4c 100644
--- a/ui/app/pages/swaps/slippage-buttons/slippage-buttons.test.js
+++ b/ui/pages/swaps/slippage-buttons/slippage-buttons.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import SlippageButtons from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/swaps-footer/__snapshots__/swaps-footer.test.js.snap b/ui/pages/swaps/swaps-footer/__snapshots__/swaps-footer.test.js.snap
similarity index 100%
rename from ui/app/pages/swaps/swaps-footer/__snapshots__/swaps-footer.test.js.snap
rename to ui/pages/swaps/swaps-footer/__snapshots__/swaps-footer.test.js.snap
diff --git a/ui/app/pages/swaps/swaps-footer/index.js b/ui/pages/swaps/swaps-footer/index.js
similarity index 100%
rename from ui/app/pages/swaps/swaps-footer/index.js
rename to ui/pages/swaps/swaps-footer/index.js
diff --git a/ui/app/pages/swaps/swaps-footer/index.scss b/ui/pages/swaps/swaps-footer/index.scss
similarity index 100%
rename from ui/app/pages/swaps/swaps-footer/index.scss
rename to ui/pages/swaps/swaps-footer/index.scss
diff --git a/ui/app/pages/swaps/swaps-footer/swaps-footer.js b/ui/pages/swaps/swaps-footer/swaps-footer.js
similarity index 100%
rename from ui/app/pages/swaps/swaps-footer/swaps-footer.js
rename to ui/pages/swaps/swaps-footer/swaps-footer.js
diff --git a/ui/app/pages/swaps/swaps-footer/swaps-footer.test.js b/ui/pages/swaps/swaps-footer/swaps-footer.test.js
similarity index 91%
rename from ui/app/pages/swaps/swaps-footer/swaps-footer.test.js
rename to ui/pages/swaps/swaps-footer/swaps-footer.test.js
index 4cff41083..17a2b3355 100644
--- a/ui/app/pages/swaps/swaps-footer/swaps-footer.test.js
+++ b/ui/pages/swaps/swaps-footer/swaps-footer.test.js
@@ -1,6 +1,6 @@
import React from 'react';
-import { renderWithProvider } from '../../../../../test/jest';
+import { renderWithProvider } from '../../../../test/jest';
import SwapsFooter from '.';
const createProps = (customProps = {}) => {
diff --git a/ui/app/pages/swaps/swaps-gas-customization-modal/index.js b/ui/pages/swaps/swaps-gas-customization-modal/index.js
similarity index 100%
rename from ui/app/pages/swaps/swaps-gas-customization-modal/index.js
rename to ui/pages/swaps/swaps-gas-customization-modal/index.js
diff --git a/ui/app/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.js b/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.js
similarity index 100%
rename from ui/app/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.js
rename to ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.component.js
diff --git a/ui/app/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.js b/ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.js
similarity index 100%
rename from ui/app/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.js
rename to ui/pages/swaps/swaps-gas-customization-modal/swaps-gas-customization-modal.container.js
diff --git a/ui/app/pages/swaps/swaps-util-test-constants.js b/ui/pages/swaps/swaps-util-test-constants.js
similarity index 99%
rename from ui/app/pages/swaps/swaps-util-test-constants.js
rename to ui/pages/swaps/swaps-util-test-constants.js
index cf54889b1..54c0b1e34 100644
--- a/ui/app/pages/swaps/swaps-util-test-constants.js
+++ b/ui/pages/swaps/swaps-util-test-constants.js
@@ -1,4 +1,4 @@
-import { ETH_SWAPS_TOKEN_OBJECT } from '../../../../shared/constants/swaps';
+import { ETH_SWAPS_TOKEN_OBJECT } from '../../../shared/constants/swaps';
export const TRADES_BASE_PROD_URL =
'https://api.metaswap.codefi.network/trades?';
diff --git a/ui/app/pages/swaps/swaps.util.js b/ui/pages/swaps/swaps.util.js
similarity index 98%
rename from ui/app/pages/swaps/swaps.util.js
rename to ui/pages/swaps/swaps.util.js
index 968802bb3..e72483f35 100644
--- a/ui/app/pages/swaps/swaps.util.js
+++ b/ui/pages/swaps/swaps.util.js
@@ -6,16 +6,16 @@ import {
METASWAP_CHAINID_API_HOST_MAP,
SWAPS_CHAINID_CONTRACT_ADDRESS_MAP,
ETH_WETH_CONTRACT_ADDRESS,
-} from '../../../../shared/constants/swaps';
+} from '../../../shared/constants/swaps';
import {
isSwapsDefaultTokenAddress,
isSwapsDefaultTokenSymbol,
-} from '../../../../shared/modules/swaps.utils';
+} from '../../../shared/modules/swaps.utils';
import {
ETH_SYMBOL,
WETH_SYMBOL,
MAINNET_CHAIN_ID,
-} from '../../../../shared/constants/network';
+} from '../../../shared/constants/network';
import {
calcTokenValue,
calcTokenAmount,
@@ -34,7 +34,7 @@ import { formatCurrency } from '../../helpers/utils/confirm-tx.util';
import fetchWithCache from '../../helpers/utils/fetch-with-cache';
import { calcGasTotal } from '../send/send.utils';
-import { isValidHexAddress } from '../../../../shared/modules/hexstring-utils';
+import { isValidHexAddress } from '../../../shared/modules/hexstring-utils';
const TOKEN_TRANSFER_LOG_TOPIC_HASH =
'0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
diff --git a/ui/app/pages/swaps/swaps.util.test.js b/ui/pages/swaps/swaps.util.test.js
similarity index 98%
rename from ui/app/pages/swaps/swaps.util.test.js
rename to ui/pages/swaps/swaps.util.test.js
index cc7f6d9fc..936864f0f 100644
--- a/ui/app/pages/swaps/swaps.util.test.js
+++ b/ui/pages/swaps/swaps.util.test.js
@@ -5,11 +5,11 @@ import {
MAINNET_CHAIN_ID,
BSC_CHAIN_ID,
LOCALHOST_CHAIN_ID,
-} from '../../../../shared/constants/network';
+} from '../../../shared/constants/network';
import {
SWAPS_CHAINID_CONTRACT_ADDRESS_MAP,
ETH_WETH_CONTRACT_ADDRESS,
-} from '../../../../shared/constants/swaps';
+} from '../../../shared/constants/swaps';
import {
TOKENS,
EXPECTED_TOKENS_RESULT,
@@ -26,7 +26,7 @@ import {
isContractAddressValid,
} from './swaps.util';
-jest.mock('../../../lib/storage-helpers.js', () => ({
+jest.mock('../../helpers/utils/storage-helpers.js', () => ({
getStorageItem: jest.fn(),
setStorageItem: jest.fn(),
}));
diff --git a/ui/app/pages/swaps/view-quote/index.js b/ui/pages/swaps/view-quote/index.js
similarity index 100%
rename from ui/app/pages/swaps/view-quote/index.js
rename to ui/pages/swaps/view-quote/index.js
diff --git a/ui/app/pages/swaps/view-quote/index.scss b/ui/pages/swaps/view-quote/index.scss
similarity index 100%
rename from ui/app/pages/swaps/view-quote/index.scss
rename to ui/pages/swaps/view-quote/index.scss
diff --git a/ui/app/pages/swaps/view-quote/view-quote-price-difference.js b/ui/pages/swaps/view-quote/view-quote-price-difference.js
similarity index 100%
rename from ui/app/pages/swaps/view-quote/view-quote-price-difference.js
rename to ui/pages/swaps/view-quote/view-quote-price-difference.js
diff --git a/ui/app/pages/swaps/view-quote/view-quote-price-difference.test.js b/ui/pages/swaps/view-quote/view-quote-price-difference.test.js
similarity index 98%
rename from ui/app/pages/swaps/view-quote/view-quote-price-difference.test.js
rename to ui/pages/swaps/view-quote/view-quote-price-difference.test.js
index c00322959..f18950464 100644
--- a/ui/app/pages/swaps/view-quote/view-quote-price-difference.test.js
+++ b/ui/pages/swaps/view-quote/view-quote-price-difference.test.js
@@ -2,7 +2,7 @@ import React from 'react';
import { shallow } from 'enzyme';
import { Provider } from 'react-redux';
import configureMockStore from 'redux-mock-store';
-import { NETWORK_TYPE_RPC } from '../../../../../shared/constants/network';
+import { NETWORK_TYPE_RPC } from '../../../../shared/constants/network';
import ViewQuotePriceDifference from './view-quote-price-difference';
describe('View Price Quote Difference', () => {
diff --git a/ui/app/pages/swaps/view-quote/view-quote.js b/ui/pages/swaps/view-quote/view-quote.js
similarity index 99%
rename from ui/app/pages/swaps/view-quote/view-quote.js
rename to ui/pages/swaps/view-quote/view-quote.js
index e20e806a0..ee88f7513 100644
--- a/ui/app/pages/swaps/view-quote/view-quote.js
+++ b/ui/pages/swaps/view-quote/view-quote.js
@@ -75,7 +75,7 @@ import {
getRenderableNetworkFeesForQuote,
} from '../swaps.util';
import { useTokenTracker } from '../../../hooks/useTokenTracker';
-import { QUOTES_EXPIRED_ERROR } from '../../../../../shared/constants/swaps';
+import { QUOTES_EXPIRED_ERROR } from '../../../../shared/constants/swaps';
import CountdownTimer from '../countdown-timer';
import SwapsFooter from '../swaps-footer';
import ViewQuotePriceDifference from './view-quote-price-difference';
diff --git a/ui/app/pages/unlock-page/index.js b/ui/pages/unlock-page/index.js
similarity index 100%
rename from ui/app/pages/unlock-page/index.js
rename to ui/pages/unlock-page/index.js
diff --git a/ui/app/pages/unlock-page/index.scss b/ui/pages/unlock-page/index.scss
similarity index 100%
rename from ui/app/pages/unlock-page/index.scss
rename to ui/pages/unlock-page/index.scss
diff --git a/ui/app/pages/unlock-page/unlock-page.component.js b/ui/pages/unlock-page/unlock-page.component.js
similarity index 100%
rename from ui/app/pages/unlock-page/unlock-page.component.js
rename to ui/pages/unlock-page/unlock-page.component.js
diff --git a/ui/app/pages/unlock-page/unlock-page.component.test.js b/ui/pages/unlock-page/unlock-page.component.test.js
similarity index 91%
rename from ui/app/pages/unlock-page/unlock-page.component.test.js
rename to ui/pages/unlock-page/unlock-page.component.test.js
index 412b7dc6f..b29afa5c7 100644
--- a/ui/app/pages/unlock-page/unlock-page.component.test.js
+++ b/ui/pages/unlock-page/unlock-page.component.test.js
@@ -2,7 +2,7 @@ import React from 'react';
import sinon from 'sinon';
import configureMockStore from 'redux-mock-store';
import { fireEvent } from '@testing-library/react';
-import { renderWithProvider } from '../../../../test/lib/render-helpers';
+import { renderWithProvider } from '../../../test/lib/render-helpers';
import UnlockPage from './unlock-page.component';
describe('Unlock Page Component', () => {
diff --git a/ui/app/pages/unlock-page/unlock-page.container.js b/ui/pages/unlock-page/unlock-page.container.js
similarity index 92%
rename from ui/app/pages/unlock-page/unlock-page.container.js
rename to ui/pages/unlock-page/unlock-page.container.js
index 56da7e661..eb1be797a 100644
--- a/ui/app/pages/unlock-page/unlock-page.container.js
+++ b/ui/pages/unlock-page/unlock-page.container.js
@@ -1,8 +1,8 @@
import { connect } from 'react-redux';
import { withRouter } from 'react-router-dom';
import { compose } from 'redux';
-import { getEnvironmentType } from '../../../../app/scripts/lib/util';
-import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app';
+import { getEnvironmentType } from '../../../app/scripts/lib/util';
+import { ENVIRONMENT_TYPE_POPUP } from '../../../shared/constants/app';
import {
DEFAULT_ROUTE,
RESTORE_VAULT_ROUTE,
diff --git a/ui/app/pages/unlock-page/unlock-page.container.test.js b/ui/pages/unlock-page/unlock-page.container.test.js
similarity index 100%
rename from ui/app/pages/unlock-page/unlock-page.container.test.js
rename to ui/pages/unlock-page/unlock-page.container.test.js
diff --git a/ui/app/selectors/confirm-transaction.js b/ui/selectors/confirm-transaction.js
similarity index 98%
rename from ui/app/selectors/confirm-transaction.js
rename to ui/selectors/confirm-transaction.js
index 2ac609be7..ba837e8ab 100644
--- a/ui/app/selectors/confirm-transaction.js
+++ b/ui/selectors/confirm-transaction.js
@@ -1,5 +1,5 @@
import { createSelector } from 'reselect';
-import txHelper from '../../lib/tx-helper';
+import txHelper from '../helpers/utils/tx-helper';
import { calcTokenAmount } from '../helpers/utils/token-util';
import {
roundExponential,
@@ -10,7 +10,7 @@ import {
addEth,
} from '../helpers/utils/confirm-tx.util';
import { sumHexes } from '../helpers/utils/transactions.util';
-import { transactionMatchesNetwork } from '../../../shared/modules/transaction.utils';
+import { transactionMatchesNetwork } from '../../shared/modules/transaction.utils';
import { getCurrentChainId, deprecatedGetCurrentNetworkId } from './selectors';
import { getNativeCurrency } from '.';
diff --git a/ui/app/selectors/confirm-transaction.test.js b/ui/selectors/confirm-transaction.test.js
similarity index 95%
rename from ui/app/selectors/confirm-transaction.test.js
rename to ui/selectors/confirm-transaction.test.js
index 1f7acf158..9a899a523 100644
--- a/ui/app/selectors/confirm-transaction.test.js
+++ b/ui/selectors/confirm-transaction.test.js
@@ -2,8 +2,8 @@ import {
KOVAN_CHAIN_ID,
KOVAN_NETWORK_ID,
MAINNET_CHAIN_ID,
-} from '../../../shared/constants/network';
-import { TRANSACTION_TYPES } from '../../../shared/constants/transaction';
+} from '../../shared/constants/network';
+import { TRANSACTION_TYPES } from '../../shared/constants/transaction';
import {
unconfirmedTransactionsCountSelector,
sendTokenTokenAmountAndToAddressSelector,
diff --git a/ui/app/selectors/custom-gas.js b/ui/selectors/custom-gas.js
similarity index 99%
rename from ui/app/selectors/custom-gas.js
rename to ui/selectors/custom-gas.js
index 5f01e8d08..ea64bcbe6 100644
--- a/ui/app/selectors/custom-gas.js
+++ b/ui/selectors/custom-gas.js
@@ -1,4 +1,4 @@
-import { addHexPrefix } from '../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../app/scripts/lib/util';
import {
conversionUtil,
conversionGreaterThan,
diff --git a/ui/app/selectors/custom-gas.test.js b/ui/selectors/custom-gas.test.js
similarity index 100%
rename from ui/app/selectors/custom-gas.test.js
rename to ui/selectors/custom-gas.test.js
diff --git a/ui/app/selectors/first-time-flow.js b/ui/selectors/first-time-flow.js
similarity index 100%
rename from ui/app/selectors/first-time-flow.js
rename to ui/selectors/first-time-flow.js
diff --git a/ui/app/selectors/index.js b/ui/selectors/index.js
similarity index 100%
rename from ui/app/selectors/index.js
rename to ui/selectors/index.js
diff --git a/ui/app/selectors/permissions.js b/ui/selectors/permissions.js
similarity index 99%
rename from ui/app/selectors/permissions.js
rename to ui/selectors/permissions.js
index 8ac46cc96..788275179 100644
--- a/ui/app/selectors/permissions.js
+++ b/ui/selectors/permissions.js
@@ -1,5 +1,5 @@
import { forOwn } from 'lodash';
-import { CAVEAT_NAMES } from '../../../shared/constants/permissions';
+import { CAVEAT_NAMES } from '../../shared/constants/permissions';
import {
getMetaMaskAccountsOrdered,
getOriginOfCurrentTab,
diff --git a/ui/app/selectors/permissions.test.js b/ui/selectors/permissions.test.js
similarity index 99%
rename from ui/app/selectors/permissions.test.js
rename to ui/selectors/permissions.test.js
index 3cebfd1a5..16d3057fc 100644
--- a/ui/app/selectors/permissions.test.js
+++ b/ui/selectors/permissions.test.js
@@ -1,4 +1,4 @@
-import { KOVAN_CHAIN_ID } from '../../../shared/constants/network';
+import { KOVAN_CHAIN_ID } from '../../shared/constants/network';
import {
getConnectedDomainsForSelectedAddress,
getOrderedConnectedAccountsForActiveTab,
diff --git a/ui/app/selectors/selectors.js b/ui/selectors/selectors.js
similarity index 98%
rename from ui/app/selectors/selectors.js
rename to ui/selectors/selectors.js
index eed91f858..a4d1e5d89 100644
--- a/ui/app/selectors/selectors.js
+++ b/ui/selectors/selectors.js
@@ -1,17 +1,17 @@
import { stripHexPrefix } from 'ethereumjs-util';
import { createSelector } from 'reselect';
-import { addHexPrefix } from '../../../app/scripts/lib/util';
+import { addHexPrefix } from '../../app/scripts/lib/util';
import {
MAINNET_CHAIN_ID,
TEST_CHAINS,
NETWORK_TYPE_RPC,
NATIVE_CURRENCY_TOKEN_IMAGE_MAP,
-} from '../../../shared/constants/network';
+} from '../../shared/constants/network';
import {
SWAPS_CHAINID_DEFAULT_TOKEN_MAP,
ALLOWED_SWAPS_CHAIN_IDS,
-} from '../../../shared/constants/swaps';
+} from '../../shared/constants/swaps';
import { shortenAddress, getAccountByAddress } from '../helpers/utils/util';
import {
@@ -21,7 +21,7 @@ import {
import { TEMPLATED_CONFIRMATION_MESSAGE_TYPES } from '../pages/confirmation/templates';
-import { toChecksumHexAddress } from '../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../shared/modules/hexstring-utils';
import { getNativeCurrency } from './send';
/**
diff --git a/ui/app/selectors/selectors.test.js b/ui/selectors/selectors.test.js
similarity index 98%
rename from ui/app/selectors/selectors.test.js
rename to ui/selectors/selectors.test.js
index 0b476f727..c0abf115c 100644
--- a/ui/app/selectors/selectors.test.js
+++ b/ui/selectors/selectors.test.js
@@ -1,4 +1,4 @@
-import mockState from '../../../test/data/mock-state.json';
+import mockState from '../../test/data/mock-state.json';
import * as selectors from './selectors';
describe('Selectors', () => {
diff --git a/ui/app/selectors/send-selectors-test-data.js b/ui/selectors/send-selectors-test-data.js
similarity index 98%
rename from ui/app/selectors/send-selectors-test-data.js
rename to ui/selectors/send-selectors-test-data.js
index f6c077798..e6c0d230c 100644
--- a/ui/app/selectors/send-selectors-test-data.js
+++ b/ui/selectors/send-selectors-test-data.js
@@ -1,4 +1,4 @@
-import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
+import { TRANSACTION_STATUSES } from '../../shared/constants/transaction';
const state = {
metamask: {
diff --git a/ui/app/selectors/send.js b/ui/selectors/send.js
similarity index 100%
rename from ui/app/selectors/send.js
rename to ui/selectors/send.js
diff --git a/ui/app/selectors/send.test.js b/ui/selectors/send.test.js
similarity index 99%
rename from ui/app/selectors/send.test.js
rename to ui/selectors/send.test.js
index b4f94c56b..bab7b63fe 100644
--- a/ui/app/selectors/send.test.js
+++ b/ui/selectors/send.test.js
@@ -1,5 +1,5 @@
import sinon from 'sinon';
-import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
+import { TRANSACTION_STATUSES } from '../../shared/constants/transaction';
import {
getBlockGasLimit,
getConversionRate,
diff --git a/ui/app/selectors/transactions.js b/ui/selectors/transactions.js
similarity index 98%
rename from ui/app/selectors/transactions.js
rename to ui/selectors/transactions.js
index 628b856f0..e05d7f3fa 100644
--- a/ui/app/selectors/transactions.js
+++ b/ui/selectors/transactions.js
@@ -4,12 +4,12 @@ import {
PENDING_STATUS_HASH,
} from '../helpers/constants/transactions';
import { hexToDecimal } from '../helpers/utils/conversions.util';
-import txHelper from '../../lib/tx-helper';
+import txHelper from '../helpers/utils/tx-helper';
import {
TRANSACTION_STATUSES,
TRANSACTION_TYPES,
-} from '../../../shared/constants/transaction';
-import { transactionMatchesNetwork } from '../../../shared/modules/transaction.utils';
+} from '../../shared/constants/transaction';
+import { transactionMatchesNetwork } from '../../shared/modules/transaction.utils';
import { getCurrentChainId, deprecatedGetCurrentNetworkId } from './selectors';
import { getSelectedAddress } from '.';
diff --git a/ui/app/selectors/transactions.test.js b/ui/selectors/transactions.test.js
similarity index 98%
rename from ui/app/selectors/transactions.test.js
rename to ui/selectors/transactions.test.js
index 4493c3e96..4f538e232 100644
--- a/ui/app/selectors/transactions.test.js
+++ b/ui/selectors/transactions.test.js
@@ -1,8 +1,8 @@
import {
KOVAN_CHAIN_ID,
MAINNET_CHAIN_ID,
-} from '../../../shared/constants/network';
-import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
+} from '../../shared/constants/network';
+import { TRANSACTION_STATUSES } from '../../shared/constants/transaction';
import {
unapprovedMessagesSelector,
transactionsSelector,
diff --git a/ui/app/store/actionConstants.js b/ui/store/actionConstants.js
similarity index 100%
rename from ui/app/store/actionConstants.js
rename to ui/store/actionConstants.js
diff --git a/ui/app/store/actionConstants.test.js b/ui/store/actionConstants.test.js
similarity index 96%
rename from ui/app/store/actionConstants.test.js
rename to ui/store/actionConstants.test.js
index 306704aea..7cfef827f 100644
--- a/ui/app/store/actionConstants.test.js
+++ b/ui/store/actionConstants.test.js
@@ -1,6 +1,6 @@
import freeze from 'deep-freeze-strict';
import reducers from '../ducks';
-import { NETWORK_TYPE_RPC } from '../../../shared/constants/network';
+import { NETWORK_TYPE_RPC } from '../../shared/constants/network';
import * as actionConstants from './actionConstants';
describe('Redux actionConstants', () => {
diff --git a/ui/app/store/actions.js b/ui/store/actions.js
similarity index 98%
rename from ui/app/store/actions.js
rename to ui/store/actions.js
index f3c2c03ea..42102d1f0 100644
--- a/ui/app/store/actions.js
+++ b/ui/store/actions.js
@@ -2,7 +2,7 @@ import abi from 'human-standard-token-abi';
import pify from 'pify';
import log from 'loglevel';
import { capitalize } from 'lodash';
-import getBuyEthUrl from '../../../app/scripts/lib/buy-eth-url';
+import getBuyEthUrl from '../../app/scripts/lib/buy-eth-url';
import { calcTokenBalance, estimateGasForSend } from '../pages/send/send.utils';
import {
fetchLocale,
@@ -11,22 +11,19 @@ import {
import { getMethodDataAsync } from '../helpers/utils/transactions.util';
import { fetchSymbolAndDecimals } from '../helpers/utils/token-util';
import switchDirection from '../helpers/utils/switch-direction';
-import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../shared/constants/app';
+import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../shared/constants/app';
import { hasUnconfirmedTransactions } from '../helpers/utils/confirm-tx.util';
import { setCustomGasLimit } from '../ducks/gas/gas.duck';
-import txHelper from '../../lib/tx-helper';
-import {
- getEnvironmentType,
- addHexPrefix,
-} from '../../../app/scripts/lib/util';
+import txHelper from '../helpers/utils/tx-helper';
+import { getEnvironmentType, addHexPrefix } from '../../app/scripts/lib/util';
import {
getPermittedAccountsForCurrentTab,
getSelectedAddress,
} from '../selectors';
import { switchedToUnconnectedAccount } from '../ducks/alerts/unconnected-account';
import { getUnconnectedAccountAlertEnabledness } from '../ducks/metamask/metamask';
-import { LISTED_CONTRACT_ADDRESSES } from '../../../shared/constants/tokens';
-import { toChecksumHexAddress } from '../../../shared/modules/hexstring-utils';
+import { toChecksumHexAddress } from '../../shared/modules/hexstring-utils';
+import { LISTED_CONTRACT_ADDRESSES } from '../../shared/constants/tokens';
import * as actionConstants from './actionConstants';
let background = null;
@@ -2855,10 +2852,10 @@ export function setLedgerLivePreference(value) {
// MetaMetrics
/**
- * @typedef {import('../../../shared/constants/metametrics').MetaMetricsEventPayload} MetaMetricsEventPayload
- * @typedef {import('../../../shared/constants/metametrics').MetaMetricsEventOptions} MetaMetricsEventOptions
- * @typedef {import('../../../shared/constants/metametrics').MetaMetricsPagePayload} MetaMetricsPagePayload
- * @typedef {import('../../../shared/constants/metametrics').MetaMetricsPageOptions} MetaMetricsPageOptions
+ * @typedef {import('../../shared/constants/metametrics').MetaMetricsEventPayload} MetaMetricsEventPayload
+ * @typedef {import('../../shared/constants/metametrics').MetaMetricsEventOptions} MetaMetricsEventOptions
+ * @typedef {import('../../shared/constants/metametrics').MetaMetricsPagePayload} MetaMetricsPagePayload
+ * @typedef {import('../../shared/constants/metametrics').MetaMetricsPageOptions} MetaMetricsPageOptions
*/
/**
diff --git a/ui/app/store/actions.test.js b/ui/store/actions.test.js
similarity index 99%
rename from ui/app/store/actions.test.js
rename to ui/store/actions.test.js
index d3281701e..378284301 100644
--- a/ui/app/store/actions.test.js
+++ b/ui/store/actions.test.js
@@ -2,9 +2,9 @@ import sinon from 'sinon';
import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import EthQuery from 'eth-query';
-import enLocale from '../../../app/_locales/en/messages.json';
-import MetaMaskController from '../../../app/scripts/metamask-controller';
-import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction';
+import enLocale from '../../app/_locales/en/messages.json';
+import MetaMaskController from '../../app/scripts/metamask-controller';
+import { TRANSACTION_STATUSES } from '../../shared/constants/transaction';
import * as actions from './actions';
const middleware = [thunk];
diff --git a/ui/app/store/store.js b/ui/store/store.js
similarity index 100%
rename from ui/app/store/store.js
rename to ui/store/store.js
From f8e400f51c915c082b73127b211f38f4a475eaa7 Mon Sep 17 00:00:00 2001
From: David Walsh
Date: Fri, 30 Apr 2021 10:28:07 -0500
Subject: [PATCH 03/77] Fix #10173 - Prevent lag in external monitors when
using Mac + Chrome (#10952)
---
app/scripts/controllers/app-state.js | 9 +++++++++
app/scripts/metamask-controller.js | 11 +++++++++++
app/scripts/metamask-controller.test.js | 1 +
ui/css/itcss/components/newui-sections.scss | 17 +++++++++++++++++
ui/pages/routes/routes.component.js | 9 ++++++++-
ui/pages/routes/routes.container.js | 1 +
6 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/app/scripts/controllers/app-state.js b/app/scripts/controllers/app-state.js
index 261b735dc..ce92798e0 100644
--- a/app/scripts/controllers/app-state.js
+++ b/app/scripts/controllers/app-state.js
@@ -23,6 +23,7 @@ export default class AppStateController extends EventEmitter {
timeoutMinutes: 0,
connectedStatusPopoverHasBeenShown: true,
defaultHomeActiveTabName: null,
+ browserEnvironment: {},
...initState,
});
this.timer = null;
@@ -158,4 +159,12 @@ export default class AppStateController extends EventEmitter {
timeoutMinutes * 60 * 1000,
);
}
+
+ /**
+ * Sets the current browser and OS environment
+ * @returns {void}
+ */
+ setBrowserEnvironment(os, browser) {
+ this.store.updateState({ browserEnvironment: { os, browser } });
+ }
}
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index 950601e5d..7f928d8cc 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -478,6 +478,17 @@ export default class MetamaskController extends EventEmitter {
this.submitPassword(password);
}
+ // Lazily update the store with the current extension environment
+ this.extension.runtime.getPlatformInfo(({ os }) => {
+ this.appStateController.setBrowserEnvironment(
+ os,
+ // This method is presently only supported by Firefox
+ this.extension.runtime.getBrowserInfo === undefined
+ ? 'chrome'
+ : 'firefox',
+ );
+ });
+
// TODO:LegacyProvider: Delete
this.publicConfigStore = this.createPublicConfigStore();
}
diff --git a/app/scripts/metamask-controller.test.js b/app/scripts/metamask-controller.test.js
index 25caa7892..f458f62b9 100644
--- a/app/scripts/metamask-controller.test.js
+++ b/app/scripts/metamask-controller.test.js
@@ -52,6 +52,7 @@ const ExtensionizerMock = {
onInstalled: {
addListener: () => undefined,
},
+ getPlatformInfo: async () => 'mac',
},
};
diff --git a/ui/css/itcss/components/newui-sections.scss b/ui/css/itcss/components/newui-sections.scss
index 57c1f6d77..51f485600 100644
--- a/ui/css/itcss/components/newui-sections.scss
+++ b/ui/css/itcss/components/newui-sections.scss
@@ -14,6 +14,23 @@ $sub-mid-size-breakpoint-range: "screen and (min-width: #{$break-large}) and (ma
align-items: center;
}
+// Fix for UI lag on external monitor: https://github.com/MetaMask/metamask-extension/issues/10173
+.app.os-mac.browser-chrome::after {
+ content: "";
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 1px;
+ height: 1px;
+ background-color: $Grey-000;
+ animation: emptySpinningDiv 1s infinite linear;
+}
+
+@keyframes emptySpinningDiv {
+ 0% { transform: rotate(0deg); }
+ to { transform: rotate(1turn); }
+}
+
// Main container
.main-container {
z-index: $main-container-z-index;
diff --git a/ui/pages/routes/routes.component.js b/ui/pages/routes/routes.component.js
index 3248799d2..d70256e17 100644
--- a/ui/pages/routes/routes.component.js
+++ b/ui/pages/routes/routes.component.js
@@ -90,6 +90,7 @@ export default class Routes extends Component {
autoLockTimeLimit: PropTypes.number,
pageChanged: PropTypes.func.isRequired,
prepareToLeaveSwaps: PropTypes.func,
+ browserEnvironment: PropTypes.object,
};
static contextTypes = {
@@ -275,6 +276,7 @@ export default class Routes extends Component {
submittedPendingTransactions,
isMouseUser,
prepareToLeaveSwaps,
+ browserEnvironment,
} = this.props;
const loadMessage =
loadingMessage || isNetworkLoading
@@ -296,9 +298,14 @@ export default class Routes extends Component {
({ id }) => id === sidebarTransaction.id,
);
+ const { os, browser } = browserEnvironment;
return (
setMouseUserState(true)}
onKeyDown={(e) => {
diff --git a/ui/pages/routes/routes.container.js b/ui/pages/routes/routes.container.js
index 527f9791c..952e077d8 100644
--- a/ui/pages/routes/routes.container.js
+++ b/ui/pages/routes/routes.container.js
@@ -45,6 +45,7 @@ function mapStateToProps(state) {
isMouseUser: state.appState.isMouseUser,
providerId: getNetworkIdentifier(state),
autoLockTimeLimit,
+ browserEnvironment: state.metamask.browserEnvironment,
};
}
From 4f8ac95887500f1b2f8bcc10738ed8b257baabee Mon Sep 17 00:00:00 2001
From: Mark Stacey
Date: Fri, 30 Apr 2021 18:49:07 -0230
Subject: [PATCH 04/77] Update deploy key used for Storybook (#10966)
The SSH key used for Storybook deployments to `metamask-storybook` has
been updated. This new key is associated with `metamaskbot` rather than
a specific team member.
---
.circleci/config.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 83ccb67ee..76b0a6ce7 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -485,7 +485,7 @@ jobs:
steps:
- add_ssh_keys:
fingerprints:
- - "5e:a3:2d:35:b6:25:b5:87:b1:41:11:0d:77:50:96:73"
+ - "3d:49:29:f4:b2:e8:ea:af:d1:32:eb:2a:fc:15:85:d8"
- checkout
- attach_workspace:
at: .
From 024095f0903ce120a07a7accf3211fe46d211cd8 Mon Sep 17 00:00:00 2001
From: Mark Stacey
Date: Mon, 3 May 2021 11:54:39 -0230
Subject: [PATCH 05/77] Migrate check for GITHUB_TOKEN (#10958)
The check for the GITHUB_TOKEN environment variable was being done in
the wrong release script. It has been migrated to the relevant script.
A second check for the username has also been added, as it is also
required.
---
.circleci/scripts/release-commit-version-bump.sh | 10 ++++++++++
.circleci/scripts/release-create-release-pr.sh | 6 ------
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/.circleci/scripts/release-commit-version-bump.sh b/.circleci/scripts/release-commit-version-bump.sh
index 6ceb67fb9..3def6f64e 100755
--- a/.circleci/scripts/release-commit-version-bump.sh
+++ b/.circleci/scripts/release-commit-version-bump.sh
@@ -16,6 +16,16 @@ then
exit 1
fi
+if [[ -z "${GITHUB_TOKEN:-}" ]]
+then
+ printf '%s\n' 'GITHUB_TOKEN environment variable must be set'
+ exit 1
+elif [[ -z "${GITHUB_TOKEN_USER:-}" ]]
+then
+ printf '%s\n' 'GITHUB_TOKEN_USER environment variable must be set'
+ exit 1
+fi
+
printf '%s\n' 'Commit the manifest version and changelog if the manifest has changed'
if git diff --quiet app/manifest/_base.json;
diff --git a/.circleci/scripts/release-create-release-pr.sh b/.circleci/scripts/release-create-release-pr.sh
index a1d05c777..9aa5d39bd 100755
--- a/.circleci/scripts/release-create-release-pr.sh
+++ b/.circleci/scripts/release-create-release-pr.sh
@@ -16,12 +16,6 @@ then
exit 1
fi
-if [[ -z "${GITHUB_TOKEN:-}" ]]
-then
- printf '%s\n' 'GITHUB_TOKEN environment variable must be set'
- exit 1
-fi
-
function install_github_cli ()
{
printf '%s\n' 'Installing hub CLI'
From 6fddd7f548bde7479b1c06174d7b6ea300f70d26 Mon Sep 17 00:00:00 2001
From: ryanml
Date: Mon, 3 May 2021 09:50:50 -0700
Subject: [PATCH 06/77] Removing gray background from contact address input
(#10971)
---
.../contact-list-tab/add-contact/add-contact.component.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/ui/pages/settings/contact-list-tab/add-contact/add-contact.component.js b/ui/pages/settings/contact-list-tab/add-contact/add-contact.component.js
index f017604fd..e454838d1 100644
--- a/ui/pages/settings/contact-list-tab/add-contact/add-contact.component.js
+++ b/ui/pages/settings/contact-list-tab/add-contact/add-contact.component.js
@@ -69,7 +69,6 @@ export default class AddContact extends PureComponent {
renderInput() {
return (
{
this.props.scanQrCode();
}}
From fbe1da81a517797b2779335540d80c2f8667e5af Mon Sep 17 00:00:00 2001
From: Alex Donesky
Date: Mon, 3 May 2021 12:51:09 -0500
Subject: [PATCH 07/77] send user to activity after transaction complete
(#10946)
---
test/e2e/metamask-ui.spec.js | 62 +++++++------------
.../confirm-transaction-base.component.js | 12 +++-
.../confirm-transaction-base.container.js | 3 +
.../confirm-transaction.component.js | 7 ++-
.../confirm-transaction.container.js | 8 ++-
ui/store/actions.js | 3 +-
6 files changed, 50 insertions(+), 45 deletions(-)
diff --git a/test/e2e/metamask-ui.spec.js b/test/e2e/metamask-ui.spec.js
index 78ed5f59d..d5e823c28 100644
--- a/test/e2e/metamask-ui.spec.js
+++ b/test/e2e/metamask-ui.spec.js
@@ -1112,16 +1112,10 @@ describe('MetaMask', function () {
});
it('finds the transaction in the transactions list', async function () {
- await driver.wait(async () => {
- const confirmedTxes = await driver.findElements(
- '.transaction-list__completed-transactions .transaction-list-item',
- );
- return confirmedTxes.length === 1;
- }, 10000);
-
await driver.waitForSelector(
{
- css: '.transaction-list-item__primary-currency',
+ css:
+ '.transaction-list__completed-transactions .transaction-list-item__primary-currency',
text: '-1 TST',
},
{ timeout: 10000 },
@@ -1214,15 +1208,9 @@ describe('MetaMask', function () {
});
it('finds the transaction in the transactions list', async function () {
- await driver.wait(async () => {
- const confirmedTxes = await driver.findElements(
- '.transaction-list__completed-transactions .transaction-list-item',
- );
- return confirmedTxes.length === 2;
- }, 10000);
-
await driver.waitForSelector({
- css: '.transaction-list-item__primary-currency',
+ css:
+ '.transaction-list__completed-transactions .transaction-list-item__primary-currency',
text: '-1.5 TST',
});
@@ -1230,11 +1218,23 @@ describe('MetaMask', function () {
css: '.list-item__heading',
text: 'Send TST',
});
+ });
+
+ it('checks balance', async function () {
+ await driver.clickElement({
+ text: 'Assets',
+ tag: 'button',
+ });
await driver.waitForSelector({
- css: '.token-overview__primary-balance',
+ css: '.asset-list-item__token-button',
text: '7.5 TST',
});
+
+ await driver.clickElement({
+ text: 'Activity',
+ tag: 'button',
+ });
});
});
@@ -1363,13 +1363,6 @@ describe('MetaMask', function () {
});
it('finds the transaction in the transactions list', async function () {
- await driver.wait(async () => {
- const confirmedTxes = await driver.findElements(
- '.transaction-list__completed-transactions .transaction-list-item',
- );
- return confirmedTxes.length === 3;
- }, 10000);
-
await driver.waitForSelector({
// Select only the heading of the first entry in the transaction list.
css:
@@ -1422,13 +1415,6 @@ describe('MetaMask', function () {
});
it('finds the transaction in the transactions list', async function () {
- await driver.wait(async () => {
- const confirmedTxes = await driver.findElements(
- '.transaction-list__completed-transactions .transaction-list-item',
- );
- return confirmedTxes.length === 4;
- }, 10000);
-
await driver.waitForSelector({
// Select the heading of the first transaction list item in the
// completed transaction list with text matching Send TST
@@ -1438,7 +1424,8 @@ describe('MetaMask', function () {
});
await driver.waitForSelector({
- css: '.transaction-list-item__primary-currency',
+ css:
+ '.transaction-list__completed-transactions .transaction-list-item:first-child .transaction-list-item__primary-currency',
text: '-1.5 TST',
});
});
@@ -1504,13 +1491,6 @@ describe('MetaMask', function () {
});
it('finds the transaction in the transactions list', async function () {
- await driver.wait(async () => {
- const confirmedTxes = await driver.findElements(
- '.transaction-list__completed-transactions .transaction-list-item',
- );
- return confirmedTxes.length === 5;
- }, 10000);
-
await driver.waitForSelector({
css:
'.transaction-list__completed-transactions .transaction-list-item:first-child .list-item__heading',
@@ -1521,6 +1501,10 @@ describe('MetaMask', function () {
describe('Hide token', function () {
it('hides the token when clicked', async function () {
+ await driver.clickElement({ text: 'Assets', tag: 'button' });
+
+ await driver.clickElement({ text: 'TST', tag: 'span' });
+
await driver.clickElement('[data-testid="asset-options__button"]');
await driver.clickElement('[data-testid="asset-options__hide"]');
diff --git a/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js b/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js
index 2408f872a..cc637b2ba 100644
--- a/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js
+++ b/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js
@@ -6,7 +6,10 @@ import ConfirmPageContainer, {
ConfirmDetailRow,
} from '../../components/app/confirm-page-container';
import { isBalanceSufficient } from '../send/send.utils';
-import { CONFIRM_TRANSACTION_ROUTE } from '../../helpers/constants/routes';
+import {
+ CONFIRM_TRANSACTION_ROUTE,
+ DEFAULT_ROUTE,
+} from '../../helpers/constants/routes';
import {
INSUFFICIENT_FUNDS_ERROR_KEY,
TRANSACTION_ERROR_KEY,
@@ -100,6 +103,7 @@ export default class ConfirmTransactionBase extends Component {
isMainnet: PropTypes.bool,
isEthGasPrice: PropTypes.bool,
noGasPrice: PropTypes.bool,
+ setDefaultHomeActiveTabName: PropTypes.func,
};
state = {
@@ -115,12 +119,12 @@ export default class ConfirmTransactionBase extends Component {
showTransactionConfirmedModal,
history,
clearConfirmTransaction,
- mostRecentOverviewPage,
nextNonce,
customNonceValue,
toAddress,
tryReverseResolveAddress,
isEthGasPrice,
+ setDefaultHomeActiveTabName,
} = this.props;
const {
customNonceValue: prevCustomNonceValue,
@@ -151,7 +155,9 @@ export default class ConfirmTransactionBase extends Component {
showTransactionConfirmedModal({
onSubmit: () => {
clearConfirmTransaction();
- history.push(mostRecentOverviewPage);
+ setDefaultHomeActiveTabName('Activity').then(() => {
+ history.push(DEFAULT_ROUTE);
+ });
},
});
}
diff --git a/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js b/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js
index a043ee8d4..181a216f3 100644
--- a/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js
+++ b/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js
@@ -14,6 +14,7 @@ import {
updateTransaction,
getNextNonce,
tryReverseResolveAddress,
+ setDefaultHomeActiveTabName,
} from '../../store/actions';
import {
INSUFFICIENT_FUNDS_ERROR_KEY,
@@ -235,6 +236,8 @@ export const mapDispatchToProps = (dispatch) => {
dispatch(updateAndApproveTx(customNonceMerge(txData))),
setMetaMetricsSendCount: (val) => dispatch(setMetaMetricsSendCount(val)),
getNextNonce: () => dispatch(getNextNonce()),
+ setDefaultHomeActiveTabName: (tabName) =>
+ dispatch(setDefaultHomeActiveTabName(tabName)),
};
};
diff --git a/ui/pages/confirm-transaction/confirm-transaction.component.js b/ui/pages/confirm-transaction/confirm-transaction.component.js
index c08b4f387..b88424cc7 100644
--- a/ui/pages/confirm-transaction/confirm-transaction.component.js
+++ b/ui/pages/confirm-transaction/confirm-transaction.component.js
@@ -23,6 +23,7 @@ import {
SIGNATURE_REQUEST_PATH,
DECRYPT_MESSAGE_REQUEST_PATH,
ENCRYPTION_PUBLIC_KEY_REQUEST_PATH,
+ DEFAULT_ROUTE,
} from '../../helpers/constants/routes';
import ConfTx from './conf-tx';
@@ -45,6 +46,7 @@ export default class ConfirmTransaction extends Component {
paramsTransactionId: PropTypes.string,
getTokenParams: PropTypes.func,
isTokenMethodAction: PropTypes.bool,
+ setDefaultHomeActiveTabName: PropTypes.func,
};
componentDidMount() {
@@ -89,6 +91,7 @@ export default class ConfirmTransaction extends Component {
history,
mostRecentOverviewPage,
totalUnapprovedCount,
+ setDefaultHomeActiveTabName,
} = this.props;
if (
@@ -104,7 +107,9 @@ export default class ConfirmTransaction extends Component {
!transactionId &&
!totalUnapprovedCount
) {
- history.replace(mostRecentOverviewPage);
+ setDefaultHomeActiveTabName('Activity').then(() => {
+ history.replace(DEFAULT_ROUTE);
+ });
} else if (
prevProps.transactionId &&
transactionId &&
diff --git a/ui/pages/confirm-transaction/confirm-transaction.container.js b/ui/pages/confirm-transaction/confirm-transaction.container.js
index 68ee7c3ed..21acaa7ff 100644
--- a/ui/pages/confirm-transaction/confirm-transaction.container.js
+++ b/ui/pages/confirm-transaction/confirm-transaction.container.js
@@ -8,7 +8,11 @@ import {
import { isTokenMethodAction } from '../../helpers/utils/transactions.util';
import { fetchBasicGasEstimates } from '../../ducks/gas/gas.duck';
-import { getContractMethodData, getTokenParams } from '../../store/actions';
+import {
+ getContractMethodData,
+ getTokenParams,
+ setDefaultHomeActiveTabName,
+} from '../../store/actions';
import { unconfirmedTransactionsListSelector } from '../../selectors';
import { getMostRecentOverviewPage } from '../../ducks/history/history';
import ConfirmTransaction from './confirm-transaction.component';
@@ -51,6 +55,8 @@ const mapDispatchToProps = (dispatch) => {
fetchBasicGasEstimates: () => dispatch(fetchBasicGasEstimates()),
getContractMethodData: (data) => dispatch(getContractMethodData(data)),
getTokenParams: (tokenAddress) => dispatch(getTokenParams(tokenAddress)),
+ setDefaultHomeActiveTabName: (tabName) =>
+ dispatch(setDefaultHomeActiveTabName(tabName)),
};
};
diff --git a/ui/store/actions.js b/ui/store/actions.js
index 42102d1f0..141c14537 100644
--- a/ui/store/actions.js
+++ b/ui/store/actions.js
@@ -2047,8 +2047,9 @@ export function updatePreferences(value) {
}
export function setDefaultHomeActiveTabName(value) {
- return async () => {
+ return async (dispatch) => {
await promisifiedBackground.setDefaultHomeActiveTabName(value);
+ await forceUpdateMetamaskState(dispatch);
};
}
From ce8b173f561b0b23c9f1e794fbecac4783237180 Mon Sep 17 00:00:00 2001
From: Alex Donesky
Date: Wed, 5 May 2021 08:58:29 -0500
Subject: [PATCH 08/77] add setting to dismiss seed phrase backup reminder
(#10967)
---
app/_locales/en/messages.json | 6 +++
app/scripts/controllers/preferences.js | 14 ++++++-
app/scripts/metamask-controller.js | 4 ++
ui/pages/home/home.container.js | 4 +-
.../advanced-tab/advanced-tab.component.js | 37 ++++++++++++++++++-
.../advanced-tab.component.test.js | 2 +-
.../advanced-tab/advanced-tab.container.js | 11 +++++-
ui/store/actionConstants.js | 1 +
ui/store/actions.js | 8 ++++
9 files changed, 81 insertions(+), 6 deletions(-)
diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json
index ce9df0e5c..0661b338c 100644
--- a/app/_locales/en/messages.json
+++ b/app/_locales/en/messages.json
@@ -556,6 +556,12 @@
"dismiss": {
"message": "Dismiss"
},
+ "dismissReminderDescriptionField": {
+ "message": "Turn this on to dismiss the recovery phrase backup reminder message. We highly recommend that you back up your seed phrase to avoid loss of funds"
+ },
+ "dismissReminderField": {
+ "message": "Dismiss recovery phrase backup reminder"
+ },
"done": {
"message": "Done"
},
diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js
index e7b532ba8..19aef453e 100644
--- a/app/scripts/controllers/preferences.js
+++ b/app/scripts/controllers/preferences.js
@@ -43,6 +43,7 @@ export default class PreferencesController {
useBlockie: false,
useNonceField: false,
usePhishDetect: true,
+ dismissSeedBackUpReminder: false,
// WARNING: Do not use feature flags for security-sensitive things.
// Feature flag toggling is available in the global namespace
@@ -669,7 +670,7 @@ export default class PreferencesController {
/**
* A setter for the `useLedgerLive` property
- * @param {bool} domain - Value for ledger live support
+ * @param {bool} useLedgerLive - Value for ledger live support
* @returns {Promise} A promise of the update to useLedgerLive
*/
async setLedgerLivePreference(useLedgerLive) {
@@ -685,6 +686,17 @@ export default class PreferencesController {
return this.store.getState().useLedgerLive;
}
+ /**
+ * A setter for the user preference to dismiss the seed phrase backup reminder
+ * @param {bool} dismissBackupReminder- User preference for dismissing the back up reminder
+ * @returns {void}
+ */
+ async setDismissSeedBackUpReminder(dismissSeedBackUpReminder) {
+ await this.store.updateState({
+ dismissSeedBackUpReminder,
+ });
+ }
+
//
// PRIVATE METHODS
//
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index 7f928d8cc..2dc90970c 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -735,6 +735,10 @@ export default class MetamaskController extends EventEmitter {
preferencesController.addKnownMethodData,
preferencesController,
),
+ setDismissSeedBackUpReminder: nodeify(
+ this.preferencesController.setDismissSeedBackUpReminder,
+ this.preferencesController,
+ ),
// AddressController
setAddressBook: nodeify(
diff --git a/ui/pages/home/home.container.js b/ui/pages/home/home.container.js
index c9e0e68a6..f5ff5a966 100644
--- a/ui/pages/home/home.container.js
+++ b/ui/pages/home/home.container.js
@@ -52,6 +52,7 @@ const mapStateToProps = (state) => {
connectedStatusPopoverHasBeenShown,
defaultHomeActiveTabName,
swapsState,
+ dismissSeedBackUpReminder,
} = metamask;
const accountBalance = getCurrentEthBalance(state);
const { forgottenPassword, threeBoxLastUpdated } = appState;
@@ -84,7 +85,8 @@ const mapStateToProps = (state) => {
unconfirmedTransactionsCount: unconfirmedTransactionsCountSelector(state),
shouldShowSeedPhraseReminder:
seedPhraseBackedUp === false &&
- (parseInt(accountBalance, 16) > 0 || tokens.length > 0),
+ (parseInt(accountBalance, 16) > 0 || tokens.length > 0) &&
+ dismissSeedBackUpReminder === false,
isPopup,
isNotification,
threeBoxSynced,
diff --git a/ui/pages/settings/advanced-tab/advanced-tab.component.js b/ui/pages/settings/advanced-tab/advanced-tab.component.js
index cfda8a786..09e70a303 100644
--- a/ui/pages/settings/advanced-tab/advanced-tab.component.js
+++ b/ui/pages/settings/advanced-tab/advanced-tab.component.js
@@ -38,6 +38,8 @@ export default class AdvancedTab extends PureComponent {
ipfsGateway: PropTypes.string.isRequired,
useLedgerLive: PropTypes.bool.isRequired,
setLedgerLivePreference: PropTypes.func.isRequired,
+ setDismissSeedBackUpReminder: PropTypes.func.isRequired,
+ dismissSeedBackUpReminder: PropTypes.bool.isRequired,
};
state = {
@@ -258,7 +260,7 @@ export default class AdvancedTab extends PureComponent {
data-testid="advanced-setting-custom-nonce"
>
-
{this.context.t('nonceField')}
+
{t('nonceField')}
{t('nonceFieldDescription')}
@@ -494,6 +496,38 @@ export default class AdvancedTab extends PureComponent {
);
}
+ renderDismissSeedBackupReminderControl() {
+ const { t } = this.context;
+ const {
+ dismissSeedBackUpReminder,
+ setDismissSeedBackUpReminder,
+ } = this.props;
+
+ return (
+
+
+
{t('dismissReminderField')}
+
+ {t('dismissReminderDescriptionField')}
+
+
+
+
+ setDismissSeedBackUpReminder(!value)}
+ offLabel={t('off')}
+ onLabel={t('on')}
+ />
+
+
+
+ );
+ }
+
render() {
const { warning } = this.props;
@@ -511,6 +545,7 @@ export default class AdvancedTab extends PureComponent {
{this.renderThreeBoxControl()}
{this.renderIpfsGatewayControl()}
{this.renderLedgerLiveControl()}
+ {this.renderDismissSeedBackupReminderControl()}
);
}
diff --git a/ui/pages/settings/advanced-tab/advanced-tab.component.test.js b/ui/pages/settings/advanced-tab/advanced-tab.component.test.js
index b73b90212..2cf193f52 100644
--- a/ui/pages/settings/advanced-tab/advanced-tab.component.test.js
+++ b/ui/pages/settings/advanced-tab/advanced-tab.component.test.js
@@ -23,7 +23,7 @@ describe('AdvancedTab Component', () => {
},
);
- expect(root.find('.settings-page__content-row')).toHaveLength(11);
+ expect(root.find('.settings-page__content-row')).toHaveLength(12);
});
it('should update autoLockTimeLimit', () => {
diff --git a/ui/pages/settings/advanced-tab/advanced-tab.container.js b/ui/pages/settings/advanced-tab/advanced-tab.container.js
index 2fe9eaf39..3ea88dc8d 100644
--- a/ui/pages/settings/advanced-tab/advanced-tab.container.js
+++ b/ui/pages/settings/advanced-tab/advanced-tab.container.js
@@ -12,6 +12,7 @@ import {
setUseNonceField,
setIpfsGateway,
setLedgerLivePreference,
+ setDismissSeedBackUpReminder,
} from '../../../store/actions';
import { getPreferences } from '../../../selectors';
import AdvancedTab from './advanced-tab.component';
@@ -28,6 +29,7 @@ export const mapStateToProps = (state) => {
useNonceField,
ipfsGateway,
useLedgerLive,
+ dismissSeedBackUpReminder,
} = metamask;
const { showFiatInTestnets, autoLockTimeLimit } = getPreferences(state);
@@ -42,6 +44,7 @@ export const mapStateToProps = (state) => {
useNonceField,
ipfsGateway,
useLedgerLive,
+ dismissSeedBackUpReminder,
};
};
@@ -71,8 +74,12 @@ export const mapDispatchToProps = (dispatch) => {
setIpfsGateway: (value) => {
return dispatch(setIpfsGateway(value));
},
- setLedgerLivePreference: (value) =>
- dispatch(setLedgerLivePreference(value)),
+ setLedgerLivePreference: (value) => {
+ return dispatch(setLedgerLivePreference(value));
+ },
+ setDismissSeedBackUpReminder: (value) => {
+ return dispatch(setDismissSeedBackUpReminder(value));
+ },
};
};
diff --git a/ui/store/actionConstants.js b/ui/store/actionConstants.js
index 8613318c8..362ce905f 100644
--- a/ui/store/actionConstants.js
+++ b/ui/store/actionConstants.js
@@ -72,6 +72,7 @@ export const BUY_ETH = 'BUY_ETH';
export const TOGGLE_ACCOUNT_MENU = 'TOGGLE_ACCOUNT_MENU';
+// preferences
export const SET_USE_BLOCKIE = 'SET_USE_BLOCKIE';
export const SET_USE_NONCEFIELD = 'SET_USE_NONCEFIELD';
export const UPDATE_CUSTOM_NONCE = 'UPDATE_CUSTOM_NONCE';
diff --git a/ui/store/actions.js b/ui/store/actions.js
index 141c14537..1c23e2ac0 100644
--- a/ui/store/actions.js
+++ b/ui/store/actions.js
@@ -2561,6 +2561,14 @@ export function setLastActiveTime() {
};
}
+export function setDismissSeedBackUpReminder(value) {
+ return async (dispatch) => {
+ dispatch(showLoadingIndication());
+ await promisifiedBackground.setDismissSeedBackUpReminder(value);
+ dispatch(hideLoadingIndication());
+ };
+}
+
export function setConnectedStatusPopoverHasBeenShown() {
return () => {
background.setConnectedStatusPopoverHasBeenShown((err) => {
From 91601ebe5e0e7eb7b0da2d4bb92a151f3b68afa4 Mon Sep 17 00:00:00 2001
From: Daniel <80175477+dan437@users.noreply.github.com>
Date: Wed, 5 May 2021 10:17:38 -0700
Subject: [PATCH 09/77] Allow 0% slippage, show a warning for 0 < slippage <=
1, disable "Review Swap" button for negative slippage (#10936)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Allow 0% slippage, show a warning for 0 < slippage <= 1, disable “Review Swap” button for negative slippage
* Update a translation key, use both new and old key until it’s translated everywhere
* Keep an old key for `en`: swapSlippageTooLow
* Fix an ESLint issue
* Only use swapSlippageNegative, remove swapSlippageTooLow
---
app/_locales/en/messages.json | 4 ++--
app/_locales/es/messages.json | 3 ---
app/_locales/es_419/messages.json | 3 ---
app/_locales/hi/messages.json | 3 ---
app/_locales/id/messages.json | 3 ---
app/_locales/it/messages.json | 3 ---
app/_locales/ja/messages.json | 3 ---
app/_locales/ko/messages.json | 3 ---
app/_locales/ru/messages.json | 3 ---
app/_locales/tl/messages.json | 3 ---
app/_locales/vi/messages.json | 3 ---
app/_locales/zh_CN/messages.json | 3 ---
ui/pages/swaps/build-quote/build-quote.js | 2 +-
.../slippage-buttons/slippage-buttons.js | 23 +++++++++++--------
14 files changed, 16 insertions(+), 46 deletions(-)
diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json
index 0661b338c..604d670f3 100644
--- a/app/_locales/en/messages.json
+++ b/app/_locales/en/messages.json
@@ -1958,8 +1958,8 @@
"swapSelectQuotePopoverDescription": {
"message": "Below are all the quotes gathered from multiple liquidity sources."
},
- "swapSlippageTooLow": {
- "message": "Slippage must be greater than zero"
+ "swapSlippageNegative": {
+ "message": "Slippage must be greater or equal to zero"
},
"swapSource": {
"message": "Liquidity source"
diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json
index c85673d74..8c4dc1d7f 100644
--- a/app/_locales/es/messages.json
+++ b/app/_locales/es/messages.json
@@ -1690,9 +1690,6 @@
"swapSelectQuotePopoverDescription": {
"message": "A continuación se muestran todas las cotizaciones recopiladas de múltiples fuentes de liquidez."
},
- "swapSlippageTooLow": {
- "message": "El deslizamiento debe ser mayor que cero"
- },
"swapSource": {
"message": "Fuente de liquidez"
},
diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json
index 1fe79aad6..293f5ad08 100644
--- a/app/_locales/es_419/messages.json
+++ b/app/_locales/es_419/messages.json
@@ -1690,9 +1690,6 @@
"swapSelectQuotePopoverDescription": {
"message": "A continuación se muestran todas las cotizaciones recopiladas de múltiples fuentes de liquidez."
},
- "swapSlippageTooLow": {
- "message": "El deslizamiento debe ser mayor que cero"
- },
"swapSource": {
"message": "Fuente de liquidez"
},
diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json
index c222c9c13..0dca37b75 100644
--- a/app/_locales/hi/messages.json
+++ b/app/_locales/hi/messages.json
@@ -1660,9 +1660,6 @@
"swapSelectQuotePopoverDescription": {
"message": "नीचे दिए गए सभी उद्धरण कई चलनिधि स्रोतों से एकत्र किए गए हैं।"
},
- "swapSlippageTooLow": {
- "message": "स्लिपेज शून्य से अधिक होना चाहिए"
- },
"swapSource": {
"message": "चलनिधि का स्रोत"
},
diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json
index e497c2eb0..e7c1fd9c3 100644
--- a/app/_locales/id/messages.json
+++ b/app/_locales/id/messages.json
@@ -1660,9 +1660,6 @@
"swapSelectQuotePopoverDescription": {
"message": "Di bawah ini adalah semua kuota yang dikumpulkan dari beberapa sumber likuiditas."
},
- "swapSlippageTooLow": {
- "message": "Slippage harus lebih besar dari nol"
- },
"swapSource": {
"message": "Sumber likuiditas"
},
diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json
index a312707c4..bb3c59c2e 100644
--- a/app/_locales/it/messages.json
+++ b/app/_locales/it/messages.json
@@ -1702,9 +1702,6 @@
"swapSelectQuotePopoverDescription": {
"message": "Sotto trovi tutte le quotazioni raccolte da multiple sorgenti di liquidità."
},
- "swapSlippageTooLow": {
- "message": "Lo slippage deve essere maggiore di zero"
- },
"swapSource": {
"message": "Sorgente di liquidità"
},
diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json
index 78d2132a2..ca3dfab66 100644
--- a/app/_locales/ja/messages.json
+++ b/app/_locales/ja/messages.json
@@ -1690,9 +1690,6 @@
"swapSelectQuotePopoverDescription": {
"message": "以下は複数の流動性ソースから収集したすべての見積です。"
},
- "swapSlippageTooLow": {
- "message": "スリッページは 0 より多くする必要があります。"
- },
"swapSource": {
"message": "流動性ソース"
},
diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json
index 5cd7c37fc..cee0020f3 100644
--- a/app/_locales/ko/messages.json
+++ b/app/_locales/ko/messages.json
@@ -1660,9 +1660,6 @@
"swapSelectQuotePopoverDescription": {
"message": "다음은 여러 유동성 소스에서 수집한 전체 견적입니다."
},
- "swapSlippageTooLow": {
- "message": "슬리패지는 0보다 커야 합니다."
- },
"swapSource": {
"message": "유동성 소스"
},
diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json
index 7208b08fe..41d25a030 100644
--- a/app/_locales/ru/messages.json
+++ b/app/_locales/ru/messages.json
@@ -1660,9 +1660,6 @@
"swapSelectQuotePopoverDescription": {
"message": "Ниже приведены все котировки, собранные из нескольких источников ликвидности."
},
- "swapSlippageTooLow": {
- "message": "Проскальзывание должно быть больше нуля"
- },
"swapSource": {
"message": "Источник ликвидности"
},
diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json
index 70b7b8ad8..fbde2f6b3 100644
--- a/app/_locales/tl/messages.json
+++ b/app/_locales/tl/messages.json
@@ -1657,9 +1657,6 @@
"swapSelectQuotePopoverDescription": {
"message": "Makikita sa ibaba ang lahat ng quote na nakuha mula sa maraming pinagkukunan ng liquidity."
},
- "swapSlippageTooLow": {
- "message": "Dapat ay mas malaki sa zero ang slippage"
- },
"swapSource": {
"message": "Pinagkunan ng liquidity"
},
diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json
index 883c2f67d..e55933c10 100644
--- a/app/_locales/vi/messages.json
+++ b/app/_locales/vi/messages.json
@@ -1660,9 +1660,6 @@
"swapSelectQuotePopoverDescription": {
"message": "Dưới đây là tất cả các báo giá thu thập từ nhiều nguồn thanh khoản."
},
- "swapSlippageTooLow": {
- "message": "Mức trượt giá phải lớn hơn 0"
- },
"swapSource": {
"message": "Nguồn thanh khoản"
},
diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json
index 1c0071709..782ff4f29 100644
--- a/app/_locales/zh_CN/messages.json
+++ b/app/_locales/zh_CN/messages.json
@@ -1690,9 +1690,6 @@
"swapSelectQuotePopoverDescription": {
"message": "以下是从多个流动资金来源收集到的所有报价。"
},
- "swapSlippageTooLow": {
- "message": "滑点必须大于零"
- },
"swapSource": {
"message": "流动资金来源"
},
diff --git a/ui/pages/swaps/build-quote/build-quote.js b/ui/pages/swaps/build-quote/build-quote.js
index 22ed85d30..d9c0ea7c3 100644
--- a/ui/pages/swaps/build-quote/build-quote.js
+++ b/ui/pages/swaps/build-quote/build-quote.js
@@ -533,7 +533,7 @@ export default function BuildQuote({
!isFeatureFlagLoaded ||
!Number(inputValue) ||
!selectedToToken?.address ||
- Number(maxSlippage) === 0 ||
+ Number(maxSlippage) < 0 ||
Number(maxSlippage) > MAX_ALLOWED_SLIPPAGE ||
(toTokenIsNotDefault && occurances < 2 && !verificationClicked)
}
diff --git a/ui/pages/swaps/slippage-buttons/slippage-buttons.js b/ui/pages/swaps/slippage-buttons/slippage-buttons.js
index 83b230062..66a11f43b 100644
--- a/ui/pages/swaps/slippage-buttons/slippage-buttons.js
+++ b/ui/pages/swaps/slippage-buttons/slippage-buttons.js
@@ -13,8 +13,12 @@ export default function SlippageButtons({
}) {
const t = useContext(I18nContext);
const [customValue, setCustomValue] = useState(() => {
- if (currentSlippage && currentSlippage !== 2 && currentSlippage !== 3) {
- return currentSlippage;
+ if (
+ typeof currentSlippage === 'number' &&
+ currentSlippage !== 2 &&
+ currentSlippage !== 3
+ ) {
+ return currentSlippage.toString();
}
return '';
});
@@ -24,7 +28,7 @@ export default function SlippageButtons({
return 1;
} else if (currentSlippage === 2) {
return 0;
- } else if (currentSlippage) {
+ } else if (typeof currentSlippage === 'number') {
return 2;
}
return 1; // Choose activeButtonIndex = 1 for 3% slippage by default.
@@ -33,9 +37,12 @@ export default function SlippageButtons({
let errorText = '';
if (customValue) {
- if (Number(customValue) <= 0) {
- errorText = t('swapSlippageTooLow');
- } else if (Number(customValue) < 0.5) {
+ // customValue is a string, e.g. '0'
+ if (Number(customValue) < 0) {
+ errorText = t('swapSlippageNegative');
+ } else if (Number(customValue) > 0 && Number(customValue) <= 1) {
+ // We will not show this warning for 0% slippage, because we will only
+ // return non-slippage quotes from off-chain makers.
errorText = t('swapLowSlippageError');
} else if (
Number(customValue) >= 5 &&
@@ -136,10 +143,6 @@ export default function SlippageButtons({
ref={setInputRef}
onBlur={() => {
setEnteringCustomValue(false);
- if (customValue === '0') {
- setCustomValue('');
- setActiveButtonIndex(1);
- }
}}
value={customValue || ''}
/>
From b8d385be6257395eb89e5e686b3df2c3d571d3be Mon Sep 17 00:00:00 2001
From: ryanml
Date: Wed, 5 May 2021 12:26:03 -0700
Subject: [PATCH 10/77] Revert "Revert "Adding recovery phrase video to
onboarding process (#10717)""
This reverts commit 68c5defcdbb7cf3745c14c0023a1d3c37e657992.
---
app/_locales/en/messages.json | 36 ++++++
.../recovery-onboarding/subtitles-en.vtt | 116 +++++++++++++++++
.../videos/recovery-onboarding/video.webm | Bin 0 -> 3527771 bytes
test/e2e/metamask-ui.spec.js | 5 +
ui/components/ui/box/box.js | 5 +
ui/components/ui/box/box.scss | 4 +-
ui/components/ui/box/box.stories.js | 2 +
ui/helpers/constants/routes.js | 3 +
.../create-password.component.js | 4 +-
.../new-account/new-account.component.js | 4 +-
.../first-time-flow.component.js | 11 ++
ui/pages/first-time-flow/index.scss | 10 ++
.../first-time-flow/seed-phrase/index.scss | 1 +
.../seed-phrase/seed-phrase-intro/index.js | 1 +
.../seed-phrase/seed-phrase-intro/index.scss | 44 +++++++
.../seed-phrase-intro.component.js | 121 ++++++++++++++++++
.../seed-phrase/seed-phrase.component.js | 19 ++-
17 files changed, 379 insertions(+), 7 deletions(-)
create mode 100644 app/images/videos/recovery-onboarding/subtitles-en.vtt
create mode 100644 app/images/videos/recovery-onboarding/video.webm
create mode 100644 ui/pages/first-time-flow/seed-phrase/seed-phrase-intro/index.js
create mode 100644 ui/pages/first-time-flow/seed-phrase/seed-phrase-intro/index.scss
create mode 100644 ui/pages/first-time-flow/seed-phrase/seed-phrase-intro/seed-phrase-intro.component.js
diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json
index 604d670f3..d0bb48c06 100644
--- a/app/_locales/en/messages.json
+++ b/app/_locales/en/messages.json
@@ -1552,6 +1552,42 @@
"securitySettingsDescription": {
"message": "Privacy settings and wallet seed phrase"
},
+ "seedPhraseIntroSidebarBulletFour": {
+ "message": "Write down and store in multiple secret places."
+ },
+ "seedPhraseIntroSidebarBulletOne": {
+ "message": "Save in a password manager"
+ },
+ "seedPhraseIntroSidebarBulletThree": {
+ "message": "Store in a safe-deposit box."
+ },
+ "seedPhraseIntroSidebarBulletTwo": {
+ "message": "Store in a bank vault."
+ },
+ "seedPhraseIntroSidebarCopyOne": {
+ "message": "Your recovery phrase is the “master key” to your wallet and funds."
+ },
+ "seedPhraseIntroSidebarCopyThree": {
+ "message": "If someone asks for your recovery phrase, they are most likely trying to scam you."
+ },
+ "seedPhraseIntroSidebarCopyTwo": {
+ "message": "Never, ever share your recovery phrase, even with MetaMask!"
+ },
+ "seedPhraseIntroSidebarTitleOne": {
+ "message": "What is a recovery phrase?"
+ },
+ "seedPhraseIntroSidebarTitleThree": {
+ "message": "Should I share my recovery phrase?"
+ },
+ "seedPhraseIntroSidebarTitleTwo": {
+ "message": "How do I save my recovery phrase?"
+ },
+ "seedPhraseIntroTitle": {
+ "message": "Secure your wallet"
+ },
+ "seedPhraseIntroTitleCopy": {
+ "message": "Before getting started, watch this short video to learn about your recovery phrase and how to keep your wallet safe."
+ },
"seedPhrasePlaceholder": {
"message": "Separate each word with a single space"
},
diff --git a/app/images/videos/recovery-onboarding/subtitles-en.vtt b/app/images/videos/recovery-onboarding/subtitles-en.vtt
new file mode 100644
index 000000000..c78e8ff15
--- /dev/null
+++ b/app/images/videos/recovery-onboarding/subtitles-en.vtt
@@ -0,0 +1,116 @@
+WEBVTT
+
+1
+00:00:00.780 --> 00:00:04.580
+MetaMask is a new way to connect
+to sites and applications.
+
+2
+00:00:04.580 --> 00:00:08.860
+On traditional websites, a central database
+or bank is responsible for controlling and
+
+3
+00:00:08.860 --> 00:00:10.179
+recovering your accounts.
+
+4
+00:00:10.179 --> 00:00:15.050
+But on MetaMask, all of the power belongs
+to the holder of a master key.
+
+5
+00:00:15.050 --> 00:00:18.460
+Whoever holds the key, controls the accounts.
+
+6
+00:00:18.460 --> 00:00:21.110
+Your secret recovery phrase
+is your "master key".
+
+7
+00:00:21.110 --> 00:00:26.070
+It's a series of 12 words that are generated
+when you first set up MetaMask, which allow
+
+8
+00:00:26.070 --> 00:00:30.120
+you to recover your wallet and funds if you
+ever lose access.
+
+9
+00:00:30.120 --> 00:00:33.451
+It's important that you secure
+your wallet by keeping your
+
+10
+00:00:33.451 --> 00:00:37.510
+secret recovery phrase
+very safe, and very secret.
+
+11
+00:00:37.510 --> 00:00:41.429
+If anyone gets access to it, they will have
+the "master key" to your wallet and can
+
+12
+00:00:41.429 --> 00:00:45.190
+freely access and take all of your funds.
+
+13
+00:00:45.190 --> 00:00:50.109
+To secure your MetaMask wallet you'll want
+to safely save your secret recovery phrase.
+
+14
+00:00:50.109 --> 00:00:54.930
+You can write it down, hide it somewhere,
+put it in a safe deposit box
+
+15
+00:00:54.930 --> 00:00:57.729
+or use a secure password manager.
+
+16
+00:00:57.729 --> 00:01:01.050
+Some users even engrave their
+phrase onto a metal plate!
+
+17
+00:01:01.050 --> 00:01:04.440
+Nobody, not even the team
+at MetaMask, can help you
+
+18
+00:01:04.440 --> 00:01:07.820
+recover your wallet if you lose
+your secret recovery phrase.
+
+19
+00:01:07.820 --> 00:01:12.072
+If you haven't written down your secret recovery
+phrase and stored it somewhere safe,
+
+20
+00:01:12.072 --> 00:01:15.492
+do it now. We'll wait.
+
+21
+00:01:15.500 --> 00:01:20.780
+And remember, never share your secret recovery
+phrase with anyone: not even us.
+
+22
+00:01:20.780 --> 00:01:24.910
+If anyone ever asks you for it,
+they're trying to scam you.
+
+23
+00:01:24.910 --> 00:01:26.250
+That's it!
+
+24
+00:01:26.250 --> 00:01:31.020
+Now you know what a secret recovery phrase
+is and how to keep your wallet safe and secure.
+
diff --git a/app/images/videos/recovery-onboarding/video.webm b/app/images/videos/recovery-onboarding/video.webm
new file mode 100644
index 0000000000000000000000000000000000000000..a0d5cedeb600bee480a509f6f1c5bf05bb695f25
GIT binary patch
literal 3527771
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
!+;>;ih5I
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
6Je*(uwH80Rhc
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