From a05230bba702d252f2e288a154ba2e922ce133d5 Mon Sep 17 00:00:00 2001 From: David Walsh Date: Wed, 11 Nov 2020 09:38:15 -0600 Subject: [PATCH 01/12] Provide alternative text for images where appropriate --- app/_locales/en/messages.json | 6 ++++ app/notification.html | 4 +-- .../account-menu/account-menu.component.js | 33 ++++++++++--------- ...onfirm-page-container-warning.component.js | 1 + ...confirm-page-container-header.component.js | 2 +- ...irm-page-container-navigation.component.js | 6 ++-- .../confirm-remove-account.component.js | 5 ++- .../metametrics-opt-in-modal.component.js | 2 +- .../modals/qr-scanner/qr-scanner.component.js | 2 +- .../transaction-confirmed.component.js | 2 +- ui/app/components/app/network.js | 2 +- ...transaction-activity-log-icon.component.js | 2 +- ...transaction-list-item-details.component.js | 2 +- ...-preferenced-currency-display.component.js | 2 +- .../ui/circle-icon/circle-icon.component.js | 1 + .../error-message/error-message.component.js | 2 +- .../icon-with-fallback.component.js | 1 + .../blockieIdenticon.component.js | 2 +- .../ui/identicon/identicon.component.js | 2 ++ .../ui/info-tooltip/info-tooltip.js | 2 +- .../ui/metafox-logo/metafox-logo.component.js | 4 ++- .../sender-to-recipient.component.js | 4 +-- .../token-list-placeholder.component.js | 2 +- .../token-search/token-search.component.js | 2 +- .../confirm-approve-content.component.js | 2 +- .../confirm-decrypt-message.component.js | 3 +- ...confirm-encryption-public-key.component.js | 1 + ...onfirm-token-transaction-base.component.js | 2 +- .../connect-hardware/select-hardware.js | 4 +-- .../unique-image/unique-image.component.js | 2 +- .../metametrics-opt-in.component.js | 2 +- .../select-action/select-action.component.js | 4 +-- .../contact-list-tab.component.js | 2 ++ .../settings/info-tab/info-tab.component.js | 6 +++- ui/app/pages/swaps/intro-popup/intro-popup.js | 2 +- .../loading-swaps-quotes/aggregator-logo.js | 2 +- .../main-quote-summary/main-quote-summary.js | 1 + .../list-item-search.component.js | 2 +- .../quote-details/quote-details.js | 1 + 39 files changed, 80 insertions(+), 49 deletions(-) diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 00160d07b..20c0c4e0f 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -43,6 +43,9 @@ "activityLog": { "message": "activity log" }, + "addAccount": { + "message": "Add an account" + }, "addAcquiredTokens": { "message": "Add the tokens you've acquired using MetaMask" }, @@ -1358,6 +1361,9 @@ "scanQrCode": { "message": "Scan QR Code" }, + "scrollDown": { + "message": "Scroll down" + }, "search": { "message": "Search" }, diff --git a/app/notification.html b/app/notification.html index cb8448a37..3419acdca 100644 --- a/app/notification.html +++ b/app/notification.html @@ -29,8 +29,8 @@
- - + +
diff --git a/ui/app/components/app/account-menu/account-menu.component.js b/ui/app/components/app/account-menu/account-menu.component.js index b6739f08f..00c889a94 100644 --- a/ui/app/components/app/account-menu/account-menu.component.js +++ b/ui/app/components/app/account-menu/account-menu.component.js @@ -278,22 +278,22 @@ export default class AccountMenu extends Component { } renderScrollButton() { - const { shouldShowScrollButton } = this.state + if (!this.state.shouldShowScrollButton) { + return null + } return ( - shouldShowScrollButton && ( -
- scroll down -
- ) +
+ {this.context.t('scrollDown')} +
) } @@ -357,6 +357,7 @@ export default class AccountMenu extends Component { {t('createAccount')} } text={t('createAccount')} @@ -377,6 +378,7 @@ export default class AccountMenu extends Component { {t('importAccount')} } text={t('importAccount')} @@ -401,6 +403,7 @@ export default class AccountMenu extends Component { {t('connectHardwareWallet')} } text={t('connectHardwareWallet')} @@ -411,7 +414,7 @@ export default class AccountMenu extends Component { toggleAccountMenu() history.push(ABOUT_US_ROUTE) }} - icon={} + icon={{t('infoHelp')}} text={t('infoHelp')} /> {
{props.warning} diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js b/ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js index 92d94f937..72e741a6b 100644 --- a/ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js +++ b/ui/app/components/app/confirm-page-container/confirm-page-container-header/confirm-page-container-header.component.js @@ -47,7 +47,7 @@ export default function ConfirmPageContainerHeader({ visibility: showEdit ? 'initial' : 'hidden', }} > - + onEdit()} diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js b/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js index f8f4e3ae8..010262b52 100755 --- a/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js +++ b/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js @@ -33,14 +33,14 @@ const ConfirmPageContainerNavigation = (props) => { data-testid="first-page" onClick={() => onNextTx(firstTx)} > - +
onNextTx(prevTxId)} > - +
@@ -65,6 +65,7 @@ const ConfirmPageContainerNavigation = (props) => {
{
diff --git a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js b/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js index 68ee03e03..49db8697c 100644 --- a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js +++ b/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js @@ -54,7 +54,10 @@ export default class ConfirmRemoveAccount extends Component { rel="noopener noreferrer" title={this.context.t('etherscanView')} > - + {this.context.t('etherscanView')} diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js b/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js index df326978d..6fbdb54c3 100644 --- a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js +++ b/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js @@ -24,7 +24,7 @@ export default class MetaMetricsOptInModal extends Component {
- +
Help Us Improve MetaMask diff --git a/ui/app/components/app/modals/qr-scanner/qr-scanner.component.js b/ui/app/components/app/modals/qr-scanner/qr-scanner.component.js index e74c1c94e..54556f630 100644 --- a/ui/app/components/app/modals/qr-scanner/qr-scanner.component.js +++ b/ui/app/components/app/modals/qr-scanner/qr-scanner.component.js @@ -210,7 +210,7 @@ export default class QrScanner extends Component { return ( <>
- +
{title ?
{title}
: null}
{msg}
diff --git a/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.component.js b/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.component.js index e34c4dc4d..aded7cb65 100644 --- a/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.component.js +++ b/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.component.js @@ -28,7 +28,7 @@ export default class TransactionConfirmed extends PureComponent { return (
- +
{`${t('confirmed')}!`}
diff --git a/ui/app/components/app/network.js b/ui/app/components/app/network.js index 387dbb536..194e65c65 100644 --- a/ui/app/components/app/network.js +++ b/ui/app/components/app/network.js @@ -173,7 +173,7 @@ export default class Network extends Component { ) : ( diff --git a/ui/app/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.component.js b/ui/app/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.component.js index 0ba312f8c..f00b493e1 100644 --- a/ui/app/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.component.js +++ b/ui/app/components/app/transaction-activity-log/transaction-activity-log-icon/transaction-activity-log-icon.component.js @@ -40,7 +40,7 @@ export default class TransactionActivityLogIcon extends PureComponent { return (
- {imagePath && } + {imagePath && }
) } diff --git a/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.js b/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.js index debba6573..31c3adc3e 100644 --- a/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.js +++ b/ui/app/components/app/transaction-list-item-details/transaction-list-item-details.component.js @@ -206,7 +206,7 @@ export default class TransactionListItemDetails extends PureComponent { onClick={this.handleEtherscanClick} disabled={!hash} > - + {showRetry && ( diff --git a/ui/app/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js b/ui/app/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js index c858b66b6..208b93197 100644 --- a/ui/app/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js +++ b/ui/app/components/app/user-preferenced-currency-display/user-preferenced-currency-display.component.js @@ -23,7 +23,7 @@ export default function UserPreferencedCurrencyDisplay({ const prefixComponent = useMemo(() => { return ( currency === ETH && - showEthLogo && + showEthLogo && ) }, [currency, showEthLogo, ethLogoHeight]) diff --git a/ui/app/components/ui/circle-icon/circle-icon.component.js b/ui/app/components/ui/circle-icon/circle-icon.component.js index e019aa99e..179906673 100644 --- a/ui/app/components/ui/circle-icon/circle-icon.component.js +++ b/ui/app/components/ui/circle-icon/circle-icon.component.js @@ -40,6 +40,7 @@ export default class CircleIcon extends PureComponent { height: iconSize, width: iconSize, }} + alt="" />
) diff --git a/ui/app/components/ui/error-message/error-message.component.js b/ui/app/components/ui/error-message/error-message.component.js index e4d39ee4f..fdb8b651f 100644 --- a/ui/app/components/ui/error-message/error-message.component.js +++ b/ui/app/components/ui/error-message/error-message.component.js @@ -7,7 +7,7 @@ const ErrorMessage = (props, context) => { return (
- +
{`ALERT: ${error}`}
) diff --git a/ui/app/components/ui/icon-with-fallback/icon-with-fallback.component.js b/ui/app/components/ui/icon-with-fallback/icon-with-fallback.component.js index 5b114d382..27e16d28e 100644 --- a/ui/app/components/ui/icon-with-fallback/icon-with-fallback.component.js +++ b/ui/app/components/ui/icon-with-fallback/icon-with-fallback.component.js @@ -30,6 +30,7 @@ export default class IconWithFallback extends PureComponent { src={icon} style={style} className={className} + alt="" /> ) : ( { return ( <> - + ) } diff --git a/ui/app/components/ui/identicon/identicon.component.js b/ui/app/components/ui/identicon/identicon.component.js index 167d937b8..840108f60 100644 --- a/ui/app/components/ui/identicon/identicon.component.js +++ b/ui/app/components/ui/identicon/identicon.component.js @@ -40,6 +40,7 @@ export default class Identicon extends PureComponent { className={classnames('identicon', className)} src={image} style={getStyles(diameter)} + alt="" /> ) } @@ -108,6 +109,7 @@ export default class Identicon extends PureComponent { className={classnames('identicon__eth-logo', className)} src="./images/eth_logo.svg" style={getStyles(diameter)} + alt="" /> ) } diff --git a/ui/app/components/ui/info-tooltip/info-tooltip.js b/ui/app/components/ui/info-tooltip/info-tooltip.js index 5215d0405..af2537f0c 100644 --- a/ui/app/components/ui/info-tooltip/info-tooltip.js +++ b/ui/app/components/ui/info-tooltip/info-tooltip.js @@ -32,7 +32,7 @@ export default function InfoTooltip({ html={contentText} theme={wide ? 'tippy-tooltip-wideInfo' : 'tippy-tooltip-info'} > - +
) diff --git a/ui/app/components/ui/metafox-logo/metafox-logo.component.js b/ui/app/components/ui/metafox-logo/metafox-logo.component.js index 6a9838543..faae1eb8e 100644 --- a/ui/app/components/ui/metafox-logo/metafox-logo.component.js +++ b/ui/app/components/ui/metafox-logo/metafox-logo.component.js @@ -24,12 +24,13 @@ export default class MetaFoxLogo extends PureComponent { })} >
) diff --git a/ui/app/components/ui/sender-to-recipient/sender-to-recipient.component.js b/ui/app/components/ui/sender-to-recipient/sender-to-recipient.component.js index 242ccb3fd..5c4ae7991 100644 --- a/ui/app/components/ui/sender-to-recipient/sender-to-recipient.component.js +++ b/ui/app/components/ui/sender-to-recipient/sender-to-recipient.component.js @@ -174,12 +174,12 @@ function Arrow({ variant }) { return variant === DEFAULT_VARIANT ? (
- +
) : (
- +
) } diff --git a/ui/app/pages/add-token/token-list/token-list-placeholder/token-list-placeholder.component.js b/ui/app/pages/add-token/token-list/token-list-placeholder/token-list-placeholder.component.js index bc47745cc..1cefea294 100644 --- a/ui/app/pages/add-token/token-list/token-list-placeholder/token-list-placeholder.component.js +++ b/ui/app/pages/add-token/token-list/token-list-placeholder/token-list-placeholder.component.js @@ -10,7 +10,7 @@ export default class TokenListPlaceholder extends Component { render() { return (
- +
{this.context.t('addAcquiredTokens')}
diff --git a/ui/app/pages/add-token/token-search/token-search.component.js b/ui/app/pages/add-token/token-search/token-search.component.js index 904fdcefb..8ef9d20af 100644 --- a/ui/app/pages/add-token/token-search/token-search.component.js +++ b/ui/app/pages/add-token/token-search/token-search.component.js @@ -53,7 +53,7 @@ export default class TokenSearch extends Component { renderAdornment() { return ( - + ) } diff --git a/ui/app/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js b/ui/app/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js index 6cea504e0..5486776b7 100644 --- a/ui/app/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js +++ b/ui/app/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js @@ -236,7 +236,7 @@ export default class ConfirmApproveContent extends Component {
{this.renderApproveContentCard({ - symbol: , + symbol: , title: 'Permission', content: this.renderPermissionContent(), showEdit: true, diff --git a/ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.component.js b/ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.component.js index 9f036cb80..a9f68d388 100644 --- a/ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.component.js +++ b/ui/app/pages/confirm-decrypt-message/confirm-decrypt-message.component.js @@ -195,6 +195,7 @@ export default class ConfirmDecryptMessage extends Component { ) : ( @@ -240,7 +241,7 @@ export default class ConfirmDecryptMessage extends Component { }) }} > - +
{t('decryptMetamask')}
diff --git a/ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js b/ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js index b4ecc5c10..08a3cbf95 100644 --- a/ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js +++ b/ui/app/pages/confirm-encryption-public-key/confirm-encryption-public-key.component.js @@ -170,6 +170,7 @@ export default class ConfirmEncryptionPublicKey extends Component { ) : ( diff --git a/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js b/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js index e60ec0ec2..e8bb69152 100644 --- a/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js +++ b/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js @@ -86,7 +86,7 @@ export default function ConfirmTokenTransactionBase({ primaryTotalTextOverride={
{`${tokensText} + `} - + {ethTransactionTotal}
} diff --git a/ui/app/pages/create-account/connect-hardware/select-hardware.js b/ui/app/pages/create-account/connect-hardware/select-hardware.js index f8dd18211..5ffb728a5 100644 --- a/ui/app/pages/create-account/connect-hardware/select-hardware.js +++ b/ui/app/pages/create-account/connect-hardware/select-hardware.js @@ -35,7 +35,7 @@ export default class SelectHardware extends Component { ) @@ -52,7 +52,7 @@ export default class SelectHardware extends Component { ) diff --git a/ui/app/pages/first-time-flow/create-password/unique-image/unique-image.component.js b/ui/app/pages/first-time-flow/create-password/unique-image/unique-image.component.js index a6579e60e..ad30c2066 100644 --- a/ui/app/pages/first-time-flow/create-password/unique-image/unique-image.component.js +++ b/ui/app/pages/first-time-flow/create-password/unique-image/unique-image.component.js @@ -19,7 +19,7 @@ export default class UniqueImageScreen extends PureComponent { return (
- +
{t('protectYourKeys')}
{t('protectYourKeysMessage1')} diff --git a/ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js b/ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js index d30ba7893..bc8e7dcc8 100644 --- a/ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js +++ b/ui/app/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js @@ -32,7 +32,7 @@ export default class MetaMetricsOptIn extends Component {
- +
{t('metametricsHelpImproveMetaMask')} diff --git a/ui/app/pages/first-time-flow/select-action/select-action.component.js b/ui/app/pages/first-time-flow/select-action/select-action.component.js index 2d4a21589..993c0b16e 100644 --- a/ui/app/pages/first-time-flow/select-action/select-action.component.js +++ b/ui/app/pages/first-time-flow/select-action/select-action.component.js @@ -50,7 +50,7 @@ export default class SelectAction extends PureComponent {
- +
{t('noAlreadyHaveSeed')} @@ -70,7 +70,7 @@ export default class SelectAction extends PureComponent {
- +
{t('letsGoSetUp')} diff --git a/ui/app/pages/settings/contact-list-tab/contact-list-tab.component.js b/ui/app/pages/settings/contact-list-tab/contact-list-tab.component.js index 81e5baf26..068dc3daf 100644 --- a/ui/app/pages/settings/contact-list-tab/contact-list-tab.component.js +++ b/ui/app/pages/settings/contact-list-tab/contact-list-tab.component.js @@ -49,6 +49,7 @@ export default class ContactListTab extends Component { renderAddButton() { const { history } = this.props + return (
) diff --git a/ui/app/pages/settings/info-tab/info-tab.component.js b/ui/app/pages/settings/info-tab/info-tab.component.js index 966c26799..0e8118910 100644 --- a/ui/app/pages/settings/info-tab/info-tab.component.js +++ b/ui/app/pages/settings/info-tab/info-tab.component.js @@ -96,7 +96,11 @@ export default class InfoTab extends PureComponent {
- +
diff --git a/ui/app/pages/swaps/intro-popup/intro-popup.js b/ui/app/pages/swaps/intro-popup/intro-popup.js index a01375b1b..5d525b7ee 100644 --- a/ui/app/pages/swaps/intro-popup/intro-popup.js +++ b/ui/app/pages/swaps/intro-popup/intro-popup.js @@ -64,7 +64,7 @@ export default function IntroPopup({ onClose }) { {t('swapIntroLiquiditySourcesLabel')}
- +
{t('swapIntroLearnMoreHeader')} diff --git a/ui/app/pages/swaps/loading-swaps-quotes/aggregator-logo.js b/ui/app/pages/swaps/loading-swaps-quotes/aggregator-logo.js index f121f6f03..6b147c1c6 100644 --- a/ui/app/pages/swaps/loading-swaps-quotes/aggregator-logo.js +++ b/ui/app/pages/swaps/loading-swaps-quotes/aggregator-logo.js @@ -19,7 +19,7 @@ export default function AggregatorLogo({ icon, color }) { boxShadow: `0px 4px 20px ${hexToRGB(color, 0.25)}`, }} > - +
) diff --git a/ui/app/pages/swaps/main-quote-summary/main-quote-summary.js b/ui/app/pages/swaps/main-quote-summary/main-quote-summary.js index e4f55e42e..b335cc656 100644 --- a/ui/app/pages/swaps/main-quote-summary/main-quote-summary.js +++ b/ui/app/pages/swaps/main-quote-summary/main-quote-summary.js @@ -74,6 +74,7 @@ export default function MainQuoteSummary({
( - + ) diff --git a/ui/app/pages/swaps/select-quote-popover/quote-details/quote-details.js b/ui/app/pages/swaps/select-quote-popover/quote-details/quote-details.js index 2fa822eab..96692f3a8 100644 --- a/ui/app/pages/swaps/select-quote-popover/quote-details/quote-details.js +++ b/ui/app/pages/swaps/select-quote-popover/quote-details/quote-details.js @@ -82,6 +82,7 @@ const QuoteDetails = ({ {t('swapMetaMaskFee')}
From 74866a6efb11a3633edfc2bb951b2a029118cd30 Mon Sep 17 00:00:00 2001 From: David Walsh Date: Wed, 11 Nov 2020 12:00:12 -0600 Subject: [PATCH 02/12] Make editable actoin item a button, autofocus input contents --- .../ui/editable-label/editable-label.js | 27 ++++++++++--------- .../components/ui/editable-label/index.scss | 3 ++- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/ui/app/components/ui/editable-label/editable-label.js b/ui/app/components/ui/editable-label/editable-label.js index e082082b1..12ce68a7b 100644 --- a/ui/app/components/ui/editable-label/editable-label.js +++ b/ui/app/components/ui/editable-label/editable-label.js @@ -45,13 +45,15 @@ class EditableLabel extends Component { className={classnames('large-input', 'editable-label__input', { 'editable-label__input--error': value === '', })} + autoFocus />, -
- this.handleSubmit()} - /> -
, + , ] } @@ -60,12 +62,13 @@ class EditableLabel extends Component {
{this.state.value}
, -
- this.setState({ isEditing: true })} - /> -
, + , ] } diff --git a/ui/app/components/ui/editable-label/index.scss b/ui/app/components/ui/editable-label/index.scss index fdb430c7d..23c5df4a2 100644 --- a/ui/app/components/ui/editable-label/index.scss +++ b/ui/app/components/ui/editable-label/index.scss @@ -23,10 +23,11 @@ } } - &__icon-wrapper { + &__icon-button { position: absolute; margin-left: 10px; left: 100%; + background: unset; } &__icon { From d9924ca77173a6b5d694385ec4ea187a9c629164 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Fri, 13 Nov 2020 13:42:50 -0330 Subject: [PATCH 03/12] Update fee card designs to show savings and MM fee (#9629) * Update fee card designs to show savings and MM fee css touch up More semantic html and remove unnecessary container wrapper Update message for case when there are no savings, in new swaps fee card designs Improve display of tilde in savings designs * Ensure terms of service is shown when insufficient eth warning is shown on view-quote screen * Logic simplification in fee-card.js * Better center info tooltip icons in fee-card * Add comment about use of \!important in fee card css * Use container class property on info tooltip in fee card * Remove function call that was made redundant with 980b14089 but not removed during rebase --- app/_locales/en/messages.json | 14 +- ui/app/pages/swaps/fee-card/fee-card.js | 117 ++++++++++++++++- .../pages/swaps/fee-card/fee-card.stories.js | 17 ++- ui/app/pages/swaps/fee-card/index.scss | 124 ++++++++++++++++-- ui/app/pages/swaps/fee-card/pig-icon.js | 54 ++++++++ .../pages/swaps/main-quote-summary/index.scss | 3 + .../pages/swaps/swaps-footer/swaps-footer.js | 7 +- ui/app/pages/swaps/view-quote/index.scss | 41 +++--- ui/app/pages/swaps/view-quote/view-quote.js | 51 +++---- 9 files changed, 353 insertions(+), 75 deletions(-) create mode 100644 ui/app/pages/swaps/fee-card/pig-icon.js diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 00160d07b..3c539e810 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -1620,6 +1620,9 @@ "message": "You need $1 more $2 to complete this swap", "description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol." }, + "swapBetterQuoteAvailable": { + "message": "A better quote is available" + }, "swapBuildQuotePlaceHolderText": { "message": "No tokens available matching $1", "description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text" @@ -1726,8 +1729,8 @@ "message": "We find the best price from the top liquidity sources, every time. A fee of $1% is automatically factored into each quote, which supports ongoing development to make MetaMask even better.", "description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number." }, - "swapNQuotesAvailable": { - "message": "$1 quotes available", + "swapNQuotes": { + "message": "$1 quotes", "description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen" }, "swapNetworkFeeSummary": { @@ -1788,6 +1791,10 @@ "swapRequestForQuotation": { "message": "Request for quotation" }, + "swapSaving": { + "message": "Saving $1 $2", + "description": "Tells the user their average savings for the selected best quote. $1 is replaced by a tilde sign, to shown approximation. $2 is replaced by the approximate amount of money the user will save, in fiat" + }, "swapSearchForAToken": { "message": "Search for a token" }, @@ -1841,6 +1848,9 @@ "swapUnknown": { "message": "Unknown" }, + "swapUsingBestQuote": { + "message": "Using the best quote" + }, "swapViewToken": { "message": "View $1" }, diff --git a/ui/app/pages/swaps/fee-card/fee-card.js b/ui/app/pages/swaps/fee-card/fee-card.js index 146115130..b6c7a7545 100644 --- a/ui/app/pages/swaps/fee-card/fee-card.js +++ b/ui/app/pages/swaps/fee-card/fee-card.js @@ -1,7 +1,12 @@ import React, { useContext } from 'react' import PropTypes from 'prop-types' +import BigNumber from 'bignumber.js' +import classnames from 'classnames' import { I18nContext } from '../../../contexts/i18n' import InfoTooltip from '../../../components/ui/info-tooltip' +import { decEthToConvertedCurrency } from '../../../helpers/utils/conversions.util' +import { formatCurrency } from '../../../helpers/utils/confirm-tx.util' +import PigIcon from './pig-icon' export default function FeeCard({ primaryFee, @@ -11,11 +16,88 @@ export default function FeeCard({ tokenApprovalTextComponent, tokenApprovalSourceTokenSymbol, onTokenApprovalClick, + metaMaskFee, + savings, + isBestQuote, + numberOfQuotes, + onQuotesClick, + conversionRate, + currentCurrency, + tokenConversionRate, }) { const t = useContext(I18nContext) + const savingAmount = + isBestQuote && savings?.total + ? formatCurrency( + decEthToConvertedCurrency( + savings.total, + currentCurrency, + conversionRate, + ), + currentCurrency, + ) + : null + const savingsIsPositive = + savings?.total && new BigNumber(savings.total, 10).gt(0) + + const inDevelopment = process.env.NODE_ENV === 'development' + const shouldDisplaySavings = + inDevelopment && isBestQuote && tokenConversionRate && savingsIsPositive + + let savingsText = '' + if (inDevelopment && shouldDisplaySavings) { + savingsText = t('swapSaving', [ + + ~ + , + savingAmount, + ]) + } else if (inDevelopment && isBestQuote && tokenConversionRate) { + savingsText = t('swapUsingBestQuote') + } else if (inDevelopment && savingsIsPositive && tokenConversionRate) { + savingsText = t('swapBetterQuoteAvailable') + } + return (
+
+
+
+
+ {shouldDisplaySavings && ( +
+ +
+ )} +
+ {savingsText && ( +

{savingsText}

+ )} +
+

+ {t('swapNQuotes', [numberOfQuotes])} +

+
+ +
+
+
+
@@ -83,26 +165,39 @@ export default function FeeCard({
{!hideTokenApprovalRow && ( -
+
{t('swapThisWillAllowApprove', [tokenApprovalTextComponent])}
-
onTokenApprovalClick()} - > - {t('swapEditLimit')} -
+
onTokenApprovalClick()} + > + {t('swapEditLimit')} +
)} +
+
+
+ {t('swapQuoteIncludesRate', [metaMaskFee])} +
+ +
+
) @@ -122,4 +217,12 @@ FeeCard.propTypes = { tokenApprovalTextComponent: PropTypes.node, tokenApprovalSourceTokenSymbol: PropTypes.string, onTokenApprovalClick: PropTypes.func, + metaMaskFee: PropTypes.string.isRequired, + savings: PropTypes.object, + isBestQuote: PropTypes.bool, + onQuotesClick: PropTypes.func.isRequired, + numberOfQuotes: PropTypes.number.isRequired, + conversionRate: PropTypes.number, + currentCurrency: PropTypes.string, + tokenConversionRate: PropTypes.number, } diff --git a/ui/app/pages/swaps/fee-card/fee-card.stories.js b/ui/app/pages/swaps/fee-card/fee-card.stories.js index 6b316caab..43adbc48f 100644 --- a/ui/app/pages/swaps/fee-card/fee-card.stories.js +++ b/ui/app/pages/swaps/fee-card/fee-card.stories.js @@ -1,6 +1,6 @@ import React from 'react' import { action } from '@storybook/addon-actions' -import { text } from '@storybook/addon-knobs/react' +import { text, boolean, number, object } from '@storybook/addon-knobs/react' import FeeCard from './fee-card' const tokenApprovalTextComponent = ( @@ -35,6 +35,13 @@ export const WithAllProps = () => { tokenApprovalSourceTokenSymbol="ABC" onTokenApprovalClick={action('Clicked third row link')} hideTokenApprovalRow={false} + metaMaskFee="0.875" + savings={object('savings 1', { total: '8.55' })} + onQuotesClick={action('Clicked quotes link')} + numberOfQuotes={number('numberOfQuotes', 6)} + isBestQuote={boolean('isBestQuote', true)} + conversionRate={300} + currentCurrency="usd" />
) @@ -55,6 +62,11 @@ export const WithoutThirdRow = () => { }} onFeeCardMaxRowClick={action('Clicked max fee row link')} hideTokenApprovalRow + onQuotesClick={action('Clicked quotes link')} + numberOfQuotes={number('numberOfQuotes', 1)} + isBestQuote={boolean('isBestQuote', true)} + savings={object('savings 1', { total: '8.55' })} + metaMaskFee="0.875" />
) @@ -70,6 +82,9 @@ export const WithOnlyRequiredProps = () => { }} onFeeCardMaxRowClick={action('Clicked max fee row link')} hideTokenApprovalRow + metaMaskFee="0.875" + onQuotesClick={action('Clicked quotes link')} + numberOfQuotes={2} />
) diff --git a/ui/app/pages/swaps/fee-card/index.scss b/ui/app/pages/swaps/fee-card/index.scss index 0a86f6ab7..ce42ca676 100644 --- a/ui/app/pages/swaps/fee-card/index.scss +++ b/ui/app/pages/swaps/fee-card/index.scss @@ -1,11 +1,103 @@ .fee-card { - border-radius: 8px; - border: 1px solid $Grey-100; - width: 100%; - @include H7; + &__savings-and-quotes-header { + display: flex; + position: relative; + align-items: center; + } + + &__savings-and-quotes-header-first-part, + &__savings-and-quotes-header-second-part, + &__savings-and-quotes-header-third-part { + height: 39px; + background: $Blue-000; + border: 1px solid $Blue-500; + } + + &__savings-and-quotes-header-first-part { + width: 22px; + border-top-left-radius: 8px; + border-bottom: none; + border-right: none; + } + + &__savings-and-quotes-header-second-part { + width: 18px; + border: none; + + &--top-border { + border-top: 1px solid $Blue-500; + } + } + + &__savings-and-quotes-header-third-part { + width: 271px; + border-top-right-radius: 8px; + border-bottom: none; + border-left: none; + } + + &__pig-icon-container { + position: absolute; + left: 14.5px; + bottom: 4px; + } + + &__savings-and-quotes-row { + display: flex; + justify-content: space-between; + align-items: center; + max-width: 234px; + width: 100%; + position: absolute; + left: 58px; + + &--align-left { + left: 16px; + max-width: 272px; + } + } + + &__savings-text { + @include H6; + + font-weight: bold; + color: $Blue-500; + } + + &__quote-link-container { + display: flex; + align-items: center; + cursor: pointer; + } + + &__quote-link-text { + @include H7; + + color: $Blue-500; + } + + &__caret-right { + color: $Blue-500; + width: 6px; + height: 6px; + display: flex; + justify-content: center; + align-items: center; + margin-left: 6px; + + i { + transform: rotate(90deg); + } + } + &__main { + border: 1px solid $Blue-500; + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + width: 100%; + max-width: 311px; padding: 16px 16px 12px 16px; } @@ -31,6 +123,10 @@ cursor: pointer; } + &__row-header-text--bold { + color: $Black-100; + } + &__row, &__top-bordered-row { display: flex; @@ -51,7 +147,6 @@ img { height: 10px; width: 10px; - margin-left: 4px; cursor: pointer; } } @@ -60,7 +155,12 @@ height: 10px; width: 10px; justify-content: center; - margin-top: 2px; + + div { + // Needed to override the style property added by the react-tippy library + display: flex !important; + height: 10px; + } } &__info-tooltip-paragraph { @@ -111,11 +211,14 @@ margin-right: 12px; } - &__row-header-primary, - &__row-header-primary--bold { + &__row-header-primary { color: $Grey-500; } + &__row-header-primary--bold { + color: $Black-100; + } + &__row-header-text--bold, &__row-header-secondary--bold, &__row-header-primary--bold { @@ -125,6 +228,11 @@ &__bold { font-weight: bold; } + + &__tilde { + font-family: Roboto, Helvetica, Arial, sans-serif; + margin-right: -3.5px; + } } .info-tooltip { diff --git a/ui/app/pages/swaps/fee-card/pig-icon.js b/ui/app/pages/swaps/fee-card/pig-icon.js new file mode 100644 index 000000000..ef7677ae4 --- /dev/null +++ b/ui/app/pages/swaps/fee-card/pig-icon.js @@ -0,0 +1,54 @@ +import React from 'react' + +export default function PigIcon() { + return ( + + + + + + + + + + ) +} diff --git a/ui/app/pages/swaps/main-quote-summary/index.scss b/ui/app/pages/swaps/main-quote-summary/index.scss index 650f0717c..dfdc882f1 100644 --- a/ui/app/pages/swaps/main-quote-summary/index.scss +++ b/ui/app/pages/swaps/main-quote-summary/index.scss @@ -1,8 +1,11 @@ .main-quote-summary { display: flex; flex-flow: column; + justify-content: center; align-items: center; position: relative; + max-height: 196px; + min-height: 196px; width: 100%; color: $Black-100; diff --git a/ui/app/pages/swaps/swaps-footer/swaps-footer.js b/ui/app/pages/swaps/swaps-footer/swaps-footer.js index c158c21fb..c5a90ba34 100644 --- a/ui/app/pages/swaps/swaps-footer/swaps-footer.js +++ b/ui/app/pages/swaps/swaps-footer/swaps-footer.js @@ -13,6 +13,7 @@ export default function SwapsFooter({ disabled, showTermsOfService, showTopBorder, + className, }) { const t = useContext(I18nContext) @@ -30,7 +31,10 @@ export default function SwapsFooter({ onSubmit={onSubmit} submitText={submitText} submitButtonType="confirm" - footerClassName="swaps-footer__custom-page-container-footer-class" + footerClassName={classnames( + 'swaps-footer__custom-page-container-footer-class', + className, + )} footerButtonClassName={classnames( 'swaps-footer__custom-page-container-footer-button-class', { @@ -62,4 +66,5 @@ SwapsFooter.propTypes = { disabled: PropTypes.bool, showTermsOfService: PropTypes.bool, showTopBorder: PropTypes.bool, + className: PropTypes.string, } diff --git a/ui/app/pages/swaps/view-quote/index.scss b/ui/app/pages/swaps/view-quote/index.scss index a7fef1f42..013f57557 100644 --- a/ui/app/pages/swaps/view-quote/index.scss +++ b/ui/app/pages/swaps/view-quote/index.scss @@ -105,38 +105,25 @@ } &__countdown-timer-container { - @media screen and (max-width: 576px) { - margin-top: 12px; - margin-bottom: 16px; - - &--thin { - margin-top: 8px; - margin-bottom: 8px; - - > div { - margin-top: 0; - margin-bottom: 0; - } - } - } - - @media screen and (min-width: 576px) { - &--thin { - margin-top: 6px; - } - } + width: 152px; + min-height: 32px; + display: flex; + justify-content: center; + border-radius: 42px; + background: #f2f3f4; + margin-top: 16px; } &__fee-card-container { + display: flex; + align-items: center; + min-height: 172px; width: 100%; + max-width: 311px; margin-bottom: 8px; @media screen and (min-width: 576px) { margin-bottom: 0; - - &--three-rows { - margin-bottom: -16px; - } } } @@ -153,4 +140,10 @@ &__metamask-rate-info-icon { margin-left: 4px; } + + &__thin-swaps-footer { + @media screen and (min-width: 576px) { + height: 72px; + } + } } diff --git a/ui/app/pages/swaps/view-quote/view-quote.js b/ui/app/pages/swaps/view-quote/view-quote.js index 71279aeaf..c4375219b 100644 --- a/ui/app/pages/swaps/view-quote/view-quote.js +++ b/ui/app/pages/swaps/view-quote/view-quote.js @@ -73,7 +73,6 @@ import { useTokenTracker } from '../../../hooks/useTokenTracker' import { QUOTES_EXPIRED_ERROR } from '../../../helpers/constants/swaps' import CountdownTimer from '../countdown-timer' import SwapsFooter from '../swaps-footer' -import InfoTooltip from '../../../components/ui/info-tooltip' export default function ViewQuote() { const history = useHistory() @@ -115,6 +114,8 @@ export default function ViewQuote() { const usedQuote = selectedQuote || topQuote const tradeValue = usedQuote?.trade?.value ?? '0x0' + const { isBestQuote } = usedQuote + const fetchParamsSourceToken = fetchParams?.sourceToken const usedGasLimit = @@ -483,11 +484,7 @@ export default function ViewQuote() { /> )}
-
+
-
-
- {t('swapNQuotesAvailable', [Object.values(quotes).length])} - -
-
{ - allAvailableQuotesOpened() - setSelectQuotePopoverShown(true) - }} - > - {t('swapNQuotesAvailable', [Object.values(quotes).length])} - -
-
-
-

- {t('swapQuoteIncludesRate', [metaMaskFee])} -

- -
{ + allAvailableQuotesOpened() + setSelectQuotePopoverShown(true) + }} + savings={usedQuote?.savings} + conversionRate={conversionRate} + currentCurrency={currentCurrency} + tokenConversionRate={ + destinationTokenSymbol === 'ETH' + ? 1 + : memoizedTokenConversionRates[destinationToken.address] + } />
@@ -573,6 +559,7 @@ export default function ViewQuote() { submitText={t('swap')} onCancel={async () => await dispatch(navigateBackToBuildQuote(history))} disabled={balanceError || gasPrice === null || gasPrice === undefined} + className={showWarning && 'view-quote__thin-swaps-footer'} showTermsOfService showTopBorder /> From beb604738448de27e6c7bf33fd28da77305acb94 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Fri, 13 Nov 2020 14:25:47 -0330 Subject: [PATCH 04/12] Revert "Add custom hd path option (#9367)" (#9875) This reverts commit f30d261e692c668969e0a357cfd2b5f881b26095. The custom HD path option was found to be unsafe to use, because the displayed list of accounts would differ depending on which application was open on the Ledger device. Essentially Ledger was accepting invalid inputs, and returning junk responses. This was too dangerous to ship, as it could leave users with an account that they can't reliably recover. If we don't know how the derivation is happening, then allowing this import puts our users at risk of losing funds. We can re-introduce this functionality after adding validation to ensure that we only allow inputs that are handled correctly by Ledger. --- app/_locales/en/messages.json | 2 +- .../connect-hardware/account-list.js | 78 ++++--------------- .../connect-hardware/index.scss | 11 --- 3 files changed, 14 insertions(+), 77 deletions(-) diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 3c539e810..516de265b 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -1425,7 +1425,7 @@ "message": "Select Locale" }, "selectPathHelp": { - "message": "If you don't see your existing Ledger accounts below, try a different HD path." + "message": "If you don't see your existing Ledger accounts below, try switching paths to \"Legacy (MEW / MyCrypto)\"" }, "selectType": { "message": "Select Type" diff --git a/ui/app/pages/create-account/connect-hardware/account-list.js b/ui/app/pages/create-account/connect-hardware/account-list.js index 94ba98b60..b819c81be 100644 --- a/ui/app/pages/create-account/connect-hardware/account-list.js +++ b/ui/app/pages/create-account/connect-hardware/account-list.js @@ -5,13 +5,6 @@ import getAccountLink from '../../../../lib/account-link' import Button from '../../../components/ui/button' class AccountList extends Component { - state = { - showCustomInput: false, - customPathSelected: false, - } - - inputRef = React.createRef() - getHdPaths() { return [ { @@ -22,10 +15,6 @@ class AccountList extends Component { label: `Legacy (MEW / MyCrypto)`, value: `m/44'/60'/0'`, }, - { - label: `Custom`, - value: `custom`, - }, ] } @@ -43,7 +32,6 @@ class AccountList extends Component { } renderHdPathSelector() { - const { showCustomInput } = this.state const { onPathChange, selectedPath } = this.props const options = this.getHdPaths() @@ -58,19 +46,13 @@ class AccountList extends Component { className="hw-connect__hdPath__select" name="hd-path-select" clearable={false} - value={showCustomInput ? 'custom' : selectedPath} + value={selectedPath} options={options} onChange={(opt) => { - if (opt.value === 'custom') { - this.setState({ showCustomInput: true }) - } else { - this.setState({ showCustomInput: false }) - onPathChange(opt.value) - } + onPathChange(opt.value) }} />
- {showCustomInput && this.renderCustomInput()}
) } @@ -79,22 +61,6 @@ class AccountList extends Component { return device.slice(0, 1).toUpperCase() + device.slice(1) } - renderCustomInput() { - const hdPaths = this.getHdPaths() - return ( - { - this.setState({ customPathSelected: false }) - }} - ref={this.inputRef} - autoFocus - /> - ) - } - renderHeader() { const { device } = this.props return ( @@ -177,9 +143,6 @@ class AccountList extends Component { } renderButtons() { - const { showCustomInput, customPathSelected } = this.state - const { onPathChange } = this.props - const showSelectButton = showCustomInput && !customPathSelected const disabled = this.props.selectedAccount === null const buttonProps = {} if (disabled) { @@ -196,29 +159,15 @@ class AccountList extends Component { > {this.context.t('cancel')} - {showSelectButton ? ( - - ) : ( - - )} +
) } @@ -234,12 +183,11 @@ class AccountList extends Component { } render() { - const { showCustomInput, customPathSelected } = this.state return (
{this.renderHeader()} - {(!showCustomInput || customPathSelected) && this.renderAccounts()} - {(!showCustomInput || customPathSelected) && this.renderPagination()} + {this.renderAccounts()} + {this.renderPagination()} {this.renderButtons()} {this.renderForgetDevice()}
diff --git a/ui/app/pages/create-account/connect-hardware/index.scss b/ui/app/pages/create-account/connect-hardware/index.scss index 4d1c880cb..b9eb4c8f8 100644 --- a/ui/app/pages/create-account/connect-hardware/index.scss +++ b/ui/app/pages/create-account/connect-hardware/index.scss @@ -196,17 +196,6 @@ margin: 0 auto 20px; display: flex; } - - &__custom-input { - height: 54px; - width: 335px; - border: 1px solid $geyser; - border-radius: 4px; - background-color: $white; - color: $scorpion; - font-size: 16px; - padding: 0 20px; - } } .hw-account-list { From a75949e62c20980c4c6dc679f8e30225df5f2092 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Fri, 13 Nov 2020 14:52:48 -0330 Subject: [PATCH 05/12] Fix broken LoadingScreen PropType declaration (#9877) `PropTypes.oneOf` was used accidentally instead of `PropTypes.oneOfType`. `oneOf` expects literal values, not types. --- ui/app/components/ui/loading-screen/loading-screen.component.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/app/components/ui/loading-screen/loading-screen.component.js b/ui/app/components/ui/loading-screen/loading-screen.component.js index c3b590a14..279d54c12 100644 --- a/ui/app/components/ui/loading-screen/loading-screen.component.js +++ b/ui/app/components/ui/loading-screen/loading-screen.component.js @@ -9,7 +9,7 @@ class LoadingScreen extends Component { } static propTypes = { - loadingMessage: PropTypes.oneOf([PropTypes.string, PropTypes.element]), + loadingMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element]), showLoadingSpinner: PropTypes.bool, header: PropTypes.element, } From 7830b85bf145ed216627f2c014c18dfce2a1972d Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Fri, 13 Nov 2020 14:52:58 -0330 Subject: [PATCH 06/12] Fix malformed PropType declaraton (#9876) `PropTypes.function` was used accidentally instead of `PropType.func` --- .../pages/first-time-flow/end-of-flow/end-of-flow.component.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/app/pages/first-time-flow/end-of-flow/end-of-flow.component.js b/ui/app/pages/first-time-flow/end-of-flow/end-of-flow.component.js index 826bf094e..34a52a027 100644 --- a/ui/app/pages/first-time-flow/end-of-flow/end-of-flow.component.js +++ b/ui/app/pages/first-time-flow/end-of-flow/end-of-flow.component.js @@ -15,7 +15,7 @@ export default class EndOfFlowScreen extends PureComponent { static propTypes = { history: PropTypes.object, completionMetaMetricsName: PropTypes.string, - setCompletedOnboarding: PropTypes.function, + setCompletedOnboarding: PropTypes.func, onboardingInitiator: PropTypes.exact({ location: PropTypes.string, tabId: PropTypes.number, From 19a03d20c07c1ab5e89506bd10004f082dbefecb Mon Sep 17 00:00:00 2001 From: David Walsh Date: Fri, 13 Nov 2020 12:34:03 -0600 Subject: [PATCH 07/12] Properly detect U2F errors in hardware wallet --- ui/app/pages/create-account/connect-hardware/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ui/app/pages/create-account/connect-hardware/index.js b/ui/app/pages/create-account/connect-hardware/index.js index ef7ef9c38..8e80d3775 100644 --- a/ui/app/pages/create-account/connect-hardware/index.js +++ b/ui/app/pages/create-account/connect-hardware/index.js @@ -8,6 +8,8 @@ import { getMostRecentOverviewPage } from '../../../ducks/history/history' import SelectHardware from './select-hardware' import AccountList from './account-list' +const U2F_ERROR = 'U2F' + class ConnectHardwareForm extends Component { state = { error: null, @@ -130,8 +132,8 @@ class ConnectHardwareForm extends Component { const errorMessage = e.message if (errorMessage === 'Window blocked') { this.setState({ browserSupported: false, error: null }) - } else if (e.indexOf('U2F') > -1) { - this.setState({ error: 'U2F' }) + } else if (errorMessage.includes(U2F_ERROR)) { + this.setState({ error: U2F_ERROR }) } else if ( errorMessage !== 'Window closed' && errorMessage !== 'Popup closed' @@ -200,7 +202,7 @@ class ConnectHardwareForm extends Component { } renderError() { - if (this.state.error === 'U2F') { + if (this.state.error === U2F_ERROR) { return (

{this.context.t('troubleConnectingToWallet', [ From 74839831c0e021d5cf49666cdfb6d07f1c1ec132 Mon Sep 17 00:00:00 2001 From: Erik Marks <25517051+rekmarks@users.noreply.github.com> Date: Fri, 13 Nov 2020 11:04:48 -0800 Subject: [PATCH 08/12] @metamask/controllers@4.2.0 (#9849) --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 3dd980075..fb252bdc4 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "@formatjs/intl-relativetimeformat": "^5.2.6", "@fortawesome/fontawesome-free": "^5.13.0", "@material-ui/core": "^4.11.0", - "@metamask/controllers": "^4.0.2", + "@metamask/controllers": "^4.2.0", "@metamask/eth-ledger-bridge-keyring": "^0.2.6", "@metamask/eth-token-tracker": "^3.0.1", "@metamask/etherscan-link": "^1.2.0", diff --git a/yarn.lock b/yarn.lock index 8527d8ee9..acba5d0b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1833,16 +1833,16 @@ web3 "^0.20.7" web3-provider-engine "^16.0.1" -"@metamask/controllers@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@metamask/controllers/-/controllers-4.0.2.tgz#ec7efa2bea7f323bb3dc458b8a29d1a284f2849e" - integrity sha512-SoEgVgRlguazOJF/pHCE+DFk+9Wb0z/cSsfyFrUSLUiQ0hZOx+fuuxf5bbNvnUNdXgMqai8WP11f9IBXPBad3w== +"@metamask/controllers@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@metamask/controllers/-/controllers-4.2.0.tgz#ee304fa26aa1d291e21e7969dffee0977b149cbf" + integrity sha512-NPpBFP6x2YPEdJhjP5jC9E/WHJ+FJNWH7wf8he5/dfeY0J9hlXgkRv6vrvYI3wo6YvcgPy3IF1EOA0rR4jNbeg== dependencies: await-semaphore "^0.1.3" eth-contract-metadata "^1.11.0" eth-ens-namehash "^2.0.8" eth-json-rpc-infura "^5.1.0" - eth-keyring-controller "^5.6.1" + eth-keyring-controller "^6.1.0" eth-method-registry "1.1.0" eth-phishing-detect "^1.1.13" eth-query "^2.1.2" From 587d07c730d27bee1274005e93528cccd200a2d6 Mon Sep 17 00:00:00 2001 From: David Walsh Date: Fri, 13 Nov 2020 13:30:48 -0600 Subject: [PATCH 09/12] Prevent jump when hovering over asset list items --- ui/app/components/app/asset-list-item/asset-list-item.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ui/app/components/app/asset-list-item/asset-list-item.scss b/ui/app/components/app/asset-list-item/asset-list-item.scss index 70dee4ecd..6ee0853a5 100644 --- a/ui/app/components/app/asset-list-item/asset-list-item.scss +++ b/ui/app/components/app/asset-list-item/asset-list-item.scss @@ -46,6 +46,8 @@ display: none; text-transform: uppercase; width: fit-content; + padding-top: 0; + padding-bottom: 0; } @media (min-width: 576px) { From 5a80f04dcaf1ddbe771d7ac5e83d7f901a969706 Mon Sep 17 00:00:00 2001 From: Erik Marks <25517051+rekmarks@users.noreply.github.com> Date: Mon, 16 Nov 2020 08:32:53 -0800 Subject: [PATCH 10/12] Consolidate notification UI openers (#9885) * Consolidate notification UI openers * Update tests --- app/scripts/background.js | 5 +---- app/scripts/metamask-controller.js | 16 ++++++++-------- .../app/controllers/metamask-controller-test.js | 3 +-- test/unit/ui/app/actions.spec.js | 3 +-- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/app/scripts/background.js b/app/scripts/background.js index 99242f871..c57710bd2 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -225,10 +225,7 @@ function setupController(initState, initLangCode) { const controller = new MetamaskController({ infuraProjectId: process.env.INFURA_PROJECT_ID, // User confirmation callbacks: - showUnconfirmedMessage: triggerUi, - showUnapprovedTx: triggerUi, - showPermissionRequest: triggerUi, - showUnlockRequest: triggerUi, + showUserConfirmation: triggerUi, openPopup, // initial state initState, diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 41cb53d75..e6678054d 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -150,7 +150,7 @@ export default class MetamaskController extends EventEmitter { isUnlocked: this.isUnlocked.bind(this), initState: initState.AppStateController, onInactiveTimeout: () => this.setLocked(), - showUnlockRequest: opts.showUnlockRequest, + showUnlockRequest: opts.showUserConfirmation, preferencesStore: this.preferencesController.store, }) @@ -247,7 +247,7 @@ export default class MetamaskController extends EventEmitter { notifyDomain: this.notifyConnections.bind(this), notifyAllDomains: this.notifyAllConnections.bind(this), preferences: this.preferencesController.store, - showPermissionRequest: opts.showPermissionRequest, + showPermissionRequest: opts.showUserConfirmation, }, initState.PermissionsController, initState.PermissionsMetadata, @@ -302,7 +302,7 @@ export default class MetamaskController extends EventEmitter { getParticipateInMetrics: () => this.preferencesController.getParticipateInMetaMetrics(), }) - this.txController.on('newUnapprovedTx', () => opts.showUnapprovedTx()) + this.txController.on('newUnapprovedTx', () => opts.showUserConfirmation()) this.txController.on(`tx:status-update`, async (txId, status) => { if ( @@ -1376,7 +1376,7 @@ export default class MetamaskController extends EventEmitter { req, ) this.sendUpdate() - this.opts.showUnconfirmedMessage() + this.opts.showUserConfirmation() return promise } @@ -1439,7 +1439,7 @@ export default class MetamaskController extends EventEmitter { req, ) this.sendUpdate() - this.opts.showUnconfirmedMessage() + this.opts.showUserConfirmation() return promise } @@ -1498,7 +1498,7 @@ export default class MetamaskController extends EventEmitter { req, ) this.sendUpdate() - this.opts.showUnconfirmedMessage() + this.opts.showUserConfirmation() return promise } @@ -1590,7 +1590,7 @@ export default class MetamaskController extends EventEmitter { req, ) this.sendUpdate() - this.opts.showUnconfirmedMessage() + this.opts.showUserConfirmation() return promise } @@ -1655,7 +1655,7 @@ export default class MetamaskController extends EventEmitter { version, ) this.sendUpdate() - this.opts.showUnconfirmedMessage() + this.opts.showUserConfirmation() return promise } diff --git a/test/unit/app/controllers/metamask-controller-test.js b/test/unit/app/controllers/metamask-controller-test.js index 2a7978293..09b8ffac7 100644 --- a/test/unit/app/controllers/metamask-controller-test.js +++ b/test/unit/app/controllers/metamask-controller-test.js @@ -97,8 +97,7 @@ describe('MetaMaskController', function () { .reply(200, '{"JPY":12415.9}') metamaskController = new MetaMaskController({ - showUnapprovedTx: noop, - showUnconfirmedMessage: noop, + showUserConfirmation: noop, encryptor: { encrypt(_, object) { this.object = object diff --git a/test/unit/ui/app/actions.spec.js b/test/unit/ui/app/actions.spec.js index 928bf2012..d487d825e 100644 --- a/test/unit/ui/app/actions.spec.js +++ b/test/unit/ui/app/actions.spec.js @@ -44,8 +44,7 @@ describe('Actions', function () { platform: { getVersion: () => 'foo' }, provider, keyringController: new KeyringController({}), - showUnapprovedTx: noop, - showUnconfirmedMessage: noop, + showUserConfirmation: noop, encryptor: { encrypt(_, object) { this.object = object From 179dbcb41c66cb23f4226100ba1f00f34d4c6f79 Mon Sep 17 00:00:00 2001 From: Nate Chastain Date: Mon, 16 Nov 2020 12:27:53 -0500 Subject: [PATCH 11/12] Remove CoinSwitch from Deposit screen(#9869) Remove all CoinSwitch references and functionality, and bump Wyre to top spot on Deposit screen unless user on test network --- app/_locales/am/messages.json | 9 --- app/_locales/ar/messages.json | 9 --- app/_locales/bg/messages.json | 9 --- app/_locales/bn/messages.json | 9 --- app/_locales/ca/messages.json | 9 --- app/_locales/cs/messages.json | 9 --- app/_locales/da/messages.json | 9 --- app/_locales/de/messages.json | 9 --- app/_locales/el/messages.json | 9 --- app/_locales/en/messages.json | 9 --- app/_locales/es/messages.json | 9 --- app/_locales/es_419/messages.json | 9 --- app/_locales/et/messages.json | 9 --- app/_locales/fa/messages.json | 9 --- app/_locales/fi/messages.json | 9 --- app/_locales/fil/messages.json | 9 --- app/_locales/fr/messages.json | 9 --- app/_locales/he/messages.json | 9 --- app/_locales/hi/messages.json | 9 --- app/_locales/hn/messages.json | 9 --- app/_locales/hr/messages.json | 9 --- app/_locales/ht/messages.json | 9 --- app/_locales/hu/messages.json | 9 --- app/_locales/id/messages.json | 9 --- app/_locales/it/messages.json | 9 --- app/_locales/ja/messages.json | 9 --- app/_locales/kn/messages.json | 9 --- app/_locales/ko/messages.json | 9 --- app/_locales/lt/messages.json | 9 --- app/_locales/lv/messages.json | 9 --- app/_locales/ms/messages.json | 9 --- app/_locales/nl/messages.json | 9 --- app/_locales/no/messages.json | 9 --- app/_locales/ph/messages.json | 9 --- app/_locales/pl/messages.json | 9 --- app/_locales/pt/messages.json | 9 --- app/_locales/pt_BR/messages.json | 9 --- app/_locales/ro/messages.json | 9 --- app/_locales/ru/messages.json | 9 --- app/_locales/sk/messages.json | 9 --- app/_locales/sl/messages.json | 9 --- app/_locales/sr/messages.json | 9 --- app/_locales/sv/messages.json | 9 --- app/_locales/sw/messages.json | 9 --- app/_locales/ta/messages.json | 9 --- app/_locales/th/messages.json | 9 --- app/_locales/tr/messages.json | 9 --- app/_locales/uk/messages.json | 9 --- app/_locales/vi/messages.json | 9 --- app/_locales/zh_CN/messages.json | 9 --- app/_locales/zh_TW/messages.json | 9 --- app/images/coinswitch_logo.png | Bin 1623 -> 0 bytes app/scripts/lib/buy-eth-url.js | 2 - .../deposit-ether-modal.component.js | 62 +++++------------- .../deposit-ether-modal.container.js | 3 - 55 files changed, 18 insertions(+), 508 deletions(-) delete mode 100644 app/images/coinswitch_logo.png diff --git a/app/_locales/am/messages.json b/app/_locales/am/messages.json index a62e23ddc..92ada3d3b 100644 --- a/app/_locales/am/messages.json +++ b/app/_locales/am/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask ካሊፎርኒያ ውስጥ ተዘጋጅቶ የተገነባ ነው።" }, - "buyCoinSwitch": { - "message": "በ CoinSwitch ላይ ይግዙ" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch ከ300 በላይ ክሪፕቶ ከረንሲዎችን በጥሩ ዋጋ ለመመንዘር ባለ አንድ ማቆሚያ መዳረሻ ነው።" - }, "buyWithWyre": { "message": "ETH በ Wyre ይግዙ" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "ከ Ropsten የሙከራ አውታረ መረብ ጋር በመገናኘት ላይ" }, - "continueToCoinSwitch": { - "message": "ወደ CoinSwitch ይቀጥሉ" - }, "continueToWyre": { "message": "ወደ Wyre ይቀጥሉ" }, diff --git a/app/_locales/ar/messages.json b/app/_locales/ar/messages.json index b868e8dd5..070e0ab64 100644 --- a/app/_locales/ar/messages.json +++ b/app/_locales/ar/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "تم تصميم وإنشاء MetaMask في ولاية كاليفورنيا." }, - "buyCoinSwitch": { - "message": "قم بالشراء على CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch هي الوجهة الوحيدة لتبادل أكثر من 300 عملة مشفرة بأفضل سعر." - }, "buyWithWyre": { "message": "قم بشراء عملة إيثير بواسطة Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "جارِ الاتصال بشبكة اختبار Ropsten " }, - "continueToCoinSwitch": { - "message": "المتابعة إلى CoinSwitch" - }, "continueToWyre": { "message": "الاستمرار إلى Wyre" }, diff --git a/app/_locales/bg/messages.json b/app/_locales/bg/messages.json index cc42761e2..30c39d8cf 100644 --- a/app/_locales/bg/messages.json +++ b/app/_locales/bg/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask е проектиран и създаден в Калифорния." }, - "buyCoinSwitch": { - "message": "Купете на CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch е дестинацията за еднократна размяна, с цел да обменя повече от 300 криптовалути с най-добър курс." - }, "buyWithWyre": { "message": "Купете ETH с Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Свързване с тестова мрежа Ropsten" }, - "continueToCoinSwitch": { - "message": "Продължете към CoinSwitch" - }, "continueToWyre": { "message": "Продължете към Wyre" }, diff --git a/app/_locales/bn/messages.json b/app/_locales/bn/messages.json index cfc2d49bd..3b07cc64f 100644 --- a/app/_locales/bn/messages.json +++ b/app/_locales/bn/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask ক্যালিফোর্নিয়াতে ডিজাইন করা এবং নির্মিত।" }, - "buyCoinSwitch": { - "message": "CoinSwitch এ ক্রয় করুন" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch হল 300রও বেশি ক্রিপ্টোকারেন্সি সর্বোত্তম হারে বিনময় করার সবথেকে ভালো স্থান।" - }, "buyWithWyre": { "message": "Wyre দিয়ে ETH ক্রয় করুন" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "রপস্টেন টেস্ট নেটওয়ার্কের সাথে সংযোগ করছে" }, - "continueToCoinSwitch": { - "message": "CoinSwitch এ অবিরত থাকুন" - }, "continueToWyre": { "message": "Wyre এ অবিরত রাখুন" }, diff --git a/app/_locales/ca/messages.json b/app/_locales/ca/messages.json index d1060d8bd..29b2bb7e3 100644 --- a/app/_locales/ca/messages.json +++ b/app/_locales/ca/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask ha estat dissenyat i desenvolupat a Califòrnia." }, - "buyCoinSwitch": { - "message": "Comprar a CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch és la destinació número 1 per a canviar més de 300 criptomonedes al millor preu." - }, "buyWithWyre": { "message": "Compra ETH amb Wyre" }, @@ -221,9 +215,6 @@ "connectingToRopsten": { "message": "Connectant a la xarxa de test Ropsten" }, - "continueToCoinSwitch": { - "message": "Continua a CoinSwitch" - }, "continueToWyre": { "message": "Continua a Wyre" }, diff --git a/app/_locales/cs/messages.json b/app/_locales/cs/messages.json index 41757f932..4dc29f2a3 100644 --- a/app/_locales/cs/messages.json +++ b/app/_locales/cs/messages.json @@ -49,12 +49,6 @@ "builtInCalifornia": { "message": "MetaMask je navržen a vytvořen v Kalifornii." }, - "buyCoinSwitch": { - "message": "Nákup na CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch je jediným místem, kde můžete vyměňovat více než 300 kryptocurrencí za nejlepší cenu." - }, "cancel": { "message": "Zrušit" }, @@ -79,9 +73,6 @@ "connectingToRopsten": { "message": "Připojuji se k Ropsten Test Network" }, - "continueToCoinSwitch": { - "message": "Přejít na CoinSwitch" - }, "contractDeployment": { "message": "Nasazení kontraktu" }, diff --git a/app/_locales/da/messages.json b/app/_locales/da/messages.json index 5e19e8d01..cb6109a44 100644 --- a/app/_locales/da/messages.json +++ b/app/_locales/da/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask er designet og bygget i Californien." }, - "buyCoinSwitch": { - "message": "Køb på CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch er den direkte destination for veksling af mere end 300 kryptovalutaer til den bedste sats." - }, "buyWithWyre": { "message": "Køb ETH med Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Forbinder til Ropsten-testnetværk" }, - "continueToCoinSwitch": { - "message": "Fortsæt til CoinSwitch" - }, "continueToWyre": { "message": "Fortsæt til Wyre" }, diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index f42343322..c656bd935 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -143,12 +143,6 @@ "builtInCalifornia": { "message": "MetaMask wurde in Kalifornien entwickelt und gebaut." }, - "buyCoinSwitch": { - "message": "Auf CoinSwitch kaufen" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch ist die One-Stop-Destination, um mehr als 300 Kryptowährungen zum besten Preis zu tauschen." - }, "buyWithWyre": { "message": "ETH mit Wyre kaufen" }, @@ -215,9 +209,6 @@ "connectingToRopsten": { "message": " Verbinde zum Ropsten Testnetzwerk" }, - "continueToCoinSwitch": { - "message": "Zu CoinSwitch fortfahren" - }, "continueToWyre": { "message": "Weiter zu Wyre" }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index 00d493f80..45d38521d 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "Το MetaMask έχει σχεδιαστεί και αναπτυχθεί στην Καλιφόρνια." }, - "buyCoinSwitch": { - "message": "Αγοράστε στο CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "Το CoinSwitch είναι ο προορισμός μιας στάσης για ανταλλαγή σε περισσότερα από 300 κρυπτονομίσματα στην καλύτερη ισοτιμία." - }, "buyWithWyre": { "message": "Αγοράστε ETH με το Wyre" }, @@ -221,9 +215,6 @@ "connectingToRopsten": { "message": "Σύνδεση με το Δίκτυο Δοκιμών Ropsten" }, - "continueToCoinSwitch": { - "message": "Συνέχεια με CoinSwitch" - }, "continueToWyre": { "message": "Συνεχίστε στο Wyre" }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 757e2910e..bf44ebdf6 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -224,12 +224,6 @@ "buy": { "message": "Buy" }, - "buyCoinSwitch": { - "message": "Buy on CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch is the one-stop destination to exchange more than 300 cryptocurrencies at the best rate." - }, "buyWithWyre": { "message": "Buy ETH with Wyre" }, @@ -364,9 +358,6 @@ "contactsSettingsDescription": { "message": "Add, edit, remove, and manage your contacts" }, - "continueToCoinSwitch": { - "message": "Continue to CoinSwitch" - }, "continueToWyre": { "message": "Continue to Wyre" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index 8dd8cdd6f..542a8724f 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -127,12 +127,6 @@ "builtInCalifornia": { "message": "MetaMask fue diseñado y construido en California" }, - "buyCoinSwitch": { - "message": "Comprar en CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch es el destino de una sola parada para intercambiar más de 300 criptomonedas al mejor precio." - }, "cancel": { "message": "Cancelar" }, @@ -193,9 +187,6 @@ "connectingToRopsten": { "message": "Conectando a la red de test Ropsten" }, - "continueToCoinSwitch": { - "message": "Continuar a CoinSwitch" - }, "continueToWyre": { "message": "Continuar a Wyre" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index f5cfccba2..46b86e032 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask se diseñó y creó en California." }, - "buyCoinSwitch": { - "message": "Comprar en CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch es un destino integral para intercambiar más de 300 tipos de criptomonedas con la mejor tasa." - }, "buyWithWyre": { "message": "Comprar ETH con Wyre" }, @@ -221,9 +215,6 @@ "connectingToRopsten": { "message": "Conexión con la red de prueba Ropsten" }, - "continueToCoinSwitch": { - "message": "Continuar a CoinSwitch" - }, "continueToWyre": { "message": "Continuar a Wyre" }, diff --git a/app/_locales/et/messages.json b/app/_locales/et/messages.json index 8a1c3ee52..93ae71db0 100644 --- a/app/_locales/et/messages.json +++ b/app/_locales/et/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask on projekteeritud ja loodud Californias." }, - "buyCoinSwitch": { - "message": "Osta CoinSwitchil" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch on ühe akna sihtpunkt enama kui 300 krüptoraha vahetamiseks parima hinnaga." - }, "buyWithWyre": { "message": "Ostke ETH-d Wyre'iga" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Ühendamine Ropsteni testvõrguga" }, - "continueToCoinSwitch": { - "message": "Avage ConSwitch" - }, "continueToWyre": { "message": "Ava Wyre" }, diff --git a/app/_locales/fa/messages.json b/app/_locales/fa/messages.json index f13059643..5713eed42 100644 --- a/app/_locales/fa/messages.json +++ b/app/_locales/fa/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask در کالیفورنیا طراحی و ساخته شده است." }, - "buyCoinSwitch": { - "message": "خرید بر اساس CoinSwitch " - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch یک مقصد یک-ایستگاه است تا بیش از 300 رمز ارز را در بهترین نرخ مبادله نماید." - }, "buyWithWyre": { "message": "ETH را توسط Wyre خریداری نمایید" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "در حال اتصال به شبکه آزمایشی Ropsten" }, - "continueToCoinSwitch": { - "message": "ادامه به CoinSwitch" - }, "continueToWyre": { "message": "ادامه به Wyre" }, diff --git a/app/_locales/fi/messages.json b/app/_locales/fi/messages.json index 53dd7496f..76eab95d3 100644 --- a/app/_locales/fi/messages.json +++ b/app/_locales/fi/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask on suunniteltu ja koottu Kaliforniassa." }, - "buyCoinSwitch": { - "message": "Osta CoinSwitchissa" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch on yhden pysähdyksen kohde yli 300 kryptovaluutan vaihtoon parhailla kursseilla." - }, "buyWithWyre": { "message": "Osta ETH:ta Wyrella" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Yhdistetään Ropstenin koeverkkoon" }, - "continueToCoinSwitch": { - "message": "Jatka CoinSwitchiin" - }, "continueToWyre": { "message": "Jatka Wyreen" }, diff --git a/app/_locales/fil/messages.json b/app/_locales/fil/messages.json index 6285949c6..150838e9c 100644 --- a/app/_locales/fil/messages.json +++ b/app/_locales/fil/messages.json @@ -131,12 +131,6 @@ "builtInCalifornia": { "message": "Ang MetaMask ay dinisenyo at binuo sa California." }, - "buyCoinSwitch": { - "message": "Bilhin sa CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "Ang CoinSwitch ay ang one-stop na destinasyon para magpapalit ng mahigit sa 300 cryptocurrency sa pinakamababang halaga." - }, "buyWithWyre": { "message": "Bumili ng ETH gamit ang Wyre" }, @@ -203,9 +197,6 @@ "connectingToRopsten": { "message": "Kumokonekta sa Ropsten Test Network" }, - "continueToCoinSwitch": { - "message": "Magpatuloy sa CoinSwitch" - }, "continueToWyre": { "message": "Magpatuloy sa Wyre" }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 750591cfc..69f7ffb2c 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -140,12 +140,6 @@ "builtInCalifornia": { "message": "MetaMask est designé et developpé en Californie." }, - "buyCoinSwitch": { - "message": "Acheter sur CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch est la destination unique pour échanger plus de 300 crypto-devises au meilleur taux." - }, "buyWithWyre": { "message": "Acheter ETH avec Wyre" }, @@ -215,9 +209,6 @@ "connectingToRopsten": { "message": "Connexion au réseau de test Ropsten" }, - "continueToCoinSwitch": { - "message": "Continuer vers CoinSwitch" - }, "continueToWyre": { "message": "Continuer vers Wyre" }, diff --git a/app/_locales/he/messages.json b/app/_locales/he/messages.json index 6a0bc2cbd..b2642a218 100644 --- a/app/_locales/he/messages.json +++ b/app/_locales/he/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask תוכנן ונבנה בקליפורניה." }, - "buyCoinSwitch": { - "message": "רכישה ב-CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch הוא היעד עם כלל האפשרויות להחלפת יותר מ-300 מטבעות קריפטו בשער הטוב ביותר." - }, "buyWithWyre": { "message": "רכישת את'ר עם Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "מתחבר אל רשת בדיקה Ropsten " }, - "continueToCoinSwitch": { - "message": "המשך אל CoinSwitch" - }, "continueToWyre": { "message": "המשך ל-Wyre" }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index da83a04b7..f759ed46a 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "मेटामास्क का डिजाइन और निर्माण कैलिफोर्निया में किया गया है।" }, - "buyCoinSwitch": { - "message": "CoinSwitch पर खरीदें" - }, - "buyCoinSwitchExplainer": { - "message": "300 से अधिक क्रिप्टोकरेंसी को सबसे अच्छी दर पर एक्सचेंज करने के लिए CoinSwitch सर्वोत्तम स्थल है।" - }, "buyWithWyre": { "message": "Wyre से ETH खरीदें" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "रोपस्टेन टेस्ट नेटवर्क से कनेक्ट करना" }, - "continueToCoinSwitch": { - "message": "कॉइनस्विच पर जारी रखें " - }, "continueToWyre": { "message": "Wyre को जारी रखें" }, diff --git a/app/_locales/hn/messages.json b/app/_locales/hn/messages.json index 4bdac8559..fb588fb56 100644 --- a/app/_locales/hn/messages.json +++ b/app/_locales/hn/messages.json @@ -46,12 +46,6 @@ "builtInCalifornia": { "message": "मेटामास्क कैलिफ़ोर्निया में डिज़ाइन और बनाया गया है।" }, - "buyCoinSwitch": { - "message": "कॉइनस्विच पर खरीदें" - }, - "buyCoinSwitchExplainer": { - "message": "कॉइनस्विच 300 से अधिक क्रिप्टोक्रांसियों को सर्वोत्तम दर पर विनिमय करने का एक-स्टॉप गंतव्य है।" - }, "cancel": { "message": "रद्द करें" }, @@ -61,9 +55,6 @@ "confirmPassword": { "message": "पासवर्ड की पुष्टि करें" }, - "continueToCoinSwitch": { - "message": "कॉइनस्विच को ब्हेजना जारी रखें" - }, "contractDeployment": { "message": "अनुबंध परिनियोजन व तैनाती" }, diff --git a/app/_locales/hr/messages.json b/app/_locales/hr/messages.json index 1564bd012..eb4f9eae1 100644 --- a/app/_locales/hr/messages.json +++ b/app/_locales/hr/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask je osmišljen i izrađen u Kaliforniji." }, - "buyCoinSwitch": { - "message": "Kupujte na usluzi CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "Usluga CoinSwitch predstavlja mjesto stalne razmjene više od 300 kriptovaluta po najboljim tečajevima." - }, "buyWithWyre": { "message": "Kupi ETH Wyerom" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Povezivanje na testnu mrežu Ropsten" }, - "continueToCoinSwitch": { - "message": "Nastavi na uslugu CoinSwitch" - }, "continueToWyre": { "message": "Nastavi na uslugu Wyre" }, diff --git a/app/_locales/ht/messages.json b/app/_locales/ht/messages.json index 18901dcc8..1fdfa5843 100644 --- a/app/_locales/ht/messages.json +++ b/app/_locales/ht/messages.json @@ -76,12 +76,6 @@ "builtInCalifornia": { "message": "MetaMask fèt e bati nan California." }, - "buyCoinSwitch": { - "message": "Achte sou CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch se destinasyon nan yon sèl-Stop nan echanj plis pase 300 kriptoksèr nan pousantaj la pi byen." - }, "cancel": { "message": "Anile" }, @@ -121,9 +115,6 @@ "connectingToRopsten": { "message": "Konekte ak Ropsten Tès Rezo a" }, - "continueToCoinSwitch": { - "message": "Kontinye CoinSwitch" - }, "contractDeployment": { "message": "Kontra Deplwaman" }, diff --git a/app/_locales/hu/messages.json b/app/_locales/hu/messages.json index 9188af756..effc61461 100644 --- a/app/_locales/hu/messages.json +++ b/app/_locales/hu/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "A MetaMaskot Kaliforniában tervezték és hozták létre." }, - "buyCoinSwitch": { - "message": "Vegye meg a CoinSwitchen" - }, - "buyCoinSwitchExplainer": { - "message": "A CoinSwitch a legjobb hely több mint 300 cryptovaluta legjobb árfolyamon történő átváltására." - }, "buyWithWyre": { "message": "Vásároljon ETH-t a Wyre-rel" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Csatlakozás a Ropsten teszthálózathoz" }, - "continueToCoinSwitch": { - "message": "Tovább a CoinSwitch-re" - }, "continueToWyre": { "message": "Tovább a Wyre-re" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 9eff50642..fceea2c05 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask dirancang dan dibangun di California." }, - "buyCoinSwitch": { - "message": "Beli di CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch adalah destinasi serba-ada untuk pertukaran lebih dari 300 mata uang kripto dengan kurs terbaik." - }, "buyWithWyre": { "message": "Membeli ETH dengan Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Menghubungkan ke Jaringan Uji Coba Ropsten " }, - "continueToCoinSwitch": { - "message": "Lanjut ke CoinSwitch" - }, "continueToWyre": { "message": "Lanjutkan ke Wyre" }, diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 98bd7c936..da1dcdc8b 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -208,12 +208,6 @@ "buy": { "message": "Compra" }, - "buyCoinSwitch": { - "message": "Compra su CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch è la destinazione one-stop per lo scambio di oltre 300 criptovalute alla migliore tariffa." - }, "buyWithWyre": { "message": "Compra ETH con Wyre" }, @@ -348,9 +342,6 @@ "contactsSettingsDescription": { "message": "Aggiungi, modifica, rimuovi e gestisci i tuoi contatti" }, - "continueToCoinSwitch": { - "message": "Continua su CoinSwitch" - }, "continueToWyre": { "message": "Continua su Wyre" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 737845b3b..e0360ced8 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -112,12 +112,6 @@ "blockiesIdenticon": { "message": "Blockies Identicon を使用" }, - "buyCoinSwitch": { - "message": "CoinSwitchのサイトで購入" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitchは、最高のレートで300以上の暗号化交換を行うワンストップの宛先です。" - }, "cancel": { "message": "キャンセル" }, @@ -130,9 +124,6 @@ "confirmPassword": { "message": "パスワードの確認" }, - "continueToCoinSwitch": { - "message": "CoinSwitchを開く" - }, "contractDeployment": { "message": "コントラクトのデプロイ" }, diff --git a/app/_locales/kn/messages.json b/app/_locales/kn/messages.json index d482f073e..baeeba4a0 100644 --- a/app/_locales/kn/messages.json +++ b/app/_locales/kn/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask ಅನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಕ್ಯಾಲಿಫೋರ್ನಿಯಾದಲ್ಲಿ ನಿರ್ಮಿಸಲಾಗಿದೆ." }, - "buyCoinSwitch": { - "message": "ಕಾಯಿನ್‌ಸ್ವೀಚ್‌ನಲ್ಲಿ ಖರೀದಿಸಿ" - }, - "buyCoinSwitchExplainer": { - "message": "300 ಕ್ಕೂ ಹೆಚ್ಚು ಕ್ರಿಪ್ಟೋಕರೆನ್ಸಿಗಳನ್ನು ಉತ್ತಮ ದರದಲ್ಲಿ ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳುವ ಒಂದು ತಾಣವೆಂದರೆ ಕಾಯಿನ್‌ಸ್ವಿಚ್ ಆಗಿದೆ." - }, "buyWithWyre": { "message": "Wyre ನೊಂದಿಗೆ ETH ಖರೀದಿಸಿ" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Ropsten ಪರೀಕ್ಷಾ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ" }, - "continueToCoinSwitch": { - "message": "CoinSwitch ಗೆ ಮುಂದುವರಿಸಿ" - }, "continueToWyre": { "message": "Wyre ಗೆ ಮುಂದುವರಿಸಿ" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index ec4b28b2f..1b16838f1 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -143,12 +143,6 @@ "builtInCalifornia": { "message": "메타마스크는 캘리포니아에서 디자인되고 만들어졌습니다." }, - "buyCoinSwitch": { - "message": "코인 스위치 구입" - }, - "buyCoinSwitchExplainer": { - "message": "코인 스위치는 최상의 속도로 300 개 이상의 크립토 카드를 교환하는 원 스톱 목적지입니다." - }, "buyWithWyre": { "message": "Wyre로 ETH 구매" }, @@ -221,9 +215,6 @@ "connectingToRopsten": { "message": "Ropsten 테스트넷 접속 중" }, - "continueToCoinSwitch": { - "message": "코인 스위치 계속하기" - }, "continueToWyre": { "message": "Wyre로 계속 진행" }, diff --git a/app/_locales/lt/messages.json b/app/_locales/lt/messages.json index b8596bc82..37b05da6e 100644 --- a/app/_locales/lt/messages.json +++ b/app/_locales/lt/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "„MetaMask“ suprojektuota ir įdiegta Kalifornijoje." }, - "buyCoinSwitch": { - "message": "Pirkti „CoinSwitch“" - }, - "buyCoinSwitchExplainer": { - "message": "„CoinSwitch“ – tai lengvai pasiekiama vieta keisti per 300 kriptovaliutų geriausiu santykiu." - }, "buyWithWyre": { "message": "Pirkti ETH su „Wyre“" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Jungiamasi prie „Ropsten“ bandomojo tinklo" }, - "continueToCoinSwitch": { - "message": "Tęsti su „CoinSwitch“" - }, "continueToWyre": { "message": "Tęsti su „Wyre“" }, diff --git a/app/_locales/lv/messages.json b/app/_locales/lv/messages.json index f3362994c..1586d9f5b 100644 --- a/app/_locales/lv/messages.json +++ b/app/_locales/lv/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask ir izstrādāta un izveidota Kalifornijā." }, - "buyCoinSwitch": { - "message": "Pirkt CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch ir vienots galamērķis vairāk nekā 300 kriptovalūtu maiņai, izmantojot labāko kursu." - }, "buyWithWyre": { "message": "Pirkt ETH ar Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Pieslēdzas Ropsten testa tīklam" }, - "continueToCoinSwitch": { - "message": "Iet uz CoinSwitch" - }, "continueToWyre": { "message": "Pāriet uz Wyre" }, diff --git a/app/_locales/ms/messages.json b/app/_locales/ms/messages.json index 04eeb3342..d141c683b 100644 --- a/app/_locales/ms/messages.json +++ b/app/_locales/ms/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask direka dan dibina di California." }, - "buyCoinSwitch": { - "message": "Beli di CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch ialah tempat sehentian untuk menukar lebih daripada 300 mata wang kripto dengan kadar terbaik." - }, "buyWithWyre": { "message": "Beli ETH dengan Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Menyambungkan kepada Rangkaian Ujian Ropsten" }, - "continueToCoinSwitch": { - "message": "Teruskan ke CoinSwitch" - }, "continueToWyre": { "message": "Teruskan ke Wyre" }, diff --git a/app/_locales/nl/messages.json b/app/_locales/nl/messages.json index f6ef6b7dc..da3b96936 100644 --- a/app/_locales/nl/messages.json +++ b/app/_locales/nl/messages.json @@ -43,12 +43,6 @@ "builtInCalifornia": { "message": "MetaMask is ontworpen en gebouwd in Californië." }, - "buyCoinSwitch": { - "message": "Koop op CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch is de one-stop-bestemming om meer dan 300 cryptocurrencies tegen de beste prijs in te wisselen." - }, "cancel": { "message": "Annuleer" }, @@ -58,9 +52,6 @@ "confirmPassword": { "message": "bevestig wachtwoord" }, - "continueToCoinSwitch": { - "message": "Ga verder naar CoinSwitch" - }, "contractDeployment": { "message": "Contractimplementatie" }, diff --git a/app/_locales/no/messages.json b/app/_locales/no/messages.json index 18ef48537..80f116b75 100644 --- a/app/_locales/no/messages.json +++ b/app/_locales/no/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask ble bygget og designet i California." }, - "buyCoinSwitch": { - "message": "Kjøp på CoinSwitch " - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch er destinasjonen som utveksler mer enn 300 typer kryptovaluta med den beste kursen." - }, "buyWithWyre": { "message": "Kjøp ETH med Wyre" }, @@ -221,9 +215,6 @@ "connectingToRopsten": { "message": "Kobler til Ropsten testnettverk" }, - "continueToCoinSwitch": { - "message": "Fortsett med CoinSwitch " - }, "continueToWyre": { "message": "Fortsett til Wyre " }, diff --git a/app/_locales/ph/messages.json b/app/_locales/ph/messages.json index 6cb59f6a0..a87b87998 100644 --- a/app/_locales/ph/messages.json +++ b/app/_locales/ph/messages.json @@ -31,12 +31,6 @@ "balance": { "message": "Balanse:" }, - "buyCoinSwitch": { - "message": "Bumili sa CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "Ang CoinSwitch ay isang one-stop destination upang makipagpalitan ng higit sa 300 mga cryptocurrency sa pinakamahusay na rate." - }, "cancel": { "message": "Kanselahin" }, @@ -46,9 +40,6 @@ "confirmPassword": { "message": "Tiyakin ang Password" }, - "continueToCoinSwitch": { - "message": "Magpatuloy sa CoinSwitch" - }, "contractDeployment": { "message": "Pag-deploy ng Contract" }, diff --git a/app/_locales/pl/messages.json b/app/_locales/pl/messages.json index 4ad06b5df..7f3dc09a9 100644 --- a/app/_locales/pl/messages.json +++ b/app/_locales/pl/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask został zaprojektowany i stworzony w Kaliforni." }, - "buyCoinSwitch": { - "message": "Kup w CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch to miejsce, w którym możesz wymieniać ponad 300 kryptowalut po najlepszym kursie." - }, "buyWithWyre": { "message": "Kup ETH poprzez Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Łączenie z siecią testową Ropsten" }, - "continueToCoinSwitch": { - "message": "Przejdź do CoinSwitch" - }, "continueToWyre": { "message": "Przejdź do Wyre" }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index da8314cad..3e4aad05e 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -46,12 +46,6 @@ "builtInCalifornia": { "message": "MetaMask é desenhada e construída na California." }, - "buyCoinSwitch": { - "message": "Comprar no CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch é o destino único para trocar mais de 300 moedas criptográficas com a melhor taxa." - }, "cancel": { "message": "Cancelar" }, @@ -61,9 +55,6 @@ "confirmPassword": { "message": "Confirmar Palavra-passe" }, - "continueToCoinSwitch": { - "message": "Continuar para o CoinSwitch" - }, "contractDeployment": { "message": "Distribuição do Contrato" }, diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index 04debdecf..8973b3544 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -143,12 +143,6 @@ "builtInCalifornia": { "message": "O MetaMask foi projetado e desenvolvido na Califórnia." }, - "buyCoinSwitch": { - "message": "Compre no CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "O CoinSwitch é o destino único para trocar mais de 300 criptomoedas com a melhor taxa." - }, "buyWithWyre": { "message": "Comprar ETH com Wyre" }, @@ -218,9 +212,6 @@ "connectingToRopsten": { "message": "Conectando à Rede de Testes Ropsten" }, - "continueToCoinSwitch": { - "message": "Continuar para CoinSwitch" - }, "continueToWyre": { "message": "Continuar para Wyre" }, diff --git a/app/_locales/ro/messages.json b/app/_locales/ro/messages.json index 8f0997e65..890b5758b 100644 --- a/app/_locales/ro/messages.json +++ b/app/_locales/ro/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask este concepută și creată în California." }, - "buyCoinSwitch": { - "message": "Cumpărați pe CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch este destinația unică pentru a schimba peste 300 de cripto monede la cele mai bune cursuri." - }, "buyWithWyre": { "message": "Cumpărați ETH cu Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Se conectează la rețeaua de test Ropsten" }, - "continueToCoinSwitch": { - "message": "Continuare către CoinSwitch" - }, "continueToWyre": { "message": "Continuați la Wyre" }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index e2927be2a..c33af5cd1 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -145,12 +145,6 @@ "builtInCalifornia": { "message": "MetaMask спроектирован и разработан в Калифорнии." }, - "buyCoinSwitch": { - "message": "Купить на CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch - это однонаправленное место для обмена более 300 криптоконверсий по наилучшей цене." - }, "buyWithWyre": { "message": "Купить ETH на Wyre" }, @@ -223,9 +217,6 @@ "connectingToRopsten": { "message": "Соединение с тестовой сетью Ropsten" }, - "continueToCoinSwitch": { - "message": "Продолжить в CoinSwitch" - }, "continueToWyre": { "message": "Продолжить на Wyre" }, diff --git a/app/_locales/sk/messages.json b/app/_locales/sk/messages.json index 718e32616..08bd00cc6 100644 --- a/app/_locales/sk/messages.json +++ b/app/_locales/sk/messages.json @@ -140,12 +140,6 @@ "builtInCalifornia": { "message": "MetaMask je navržen a vytvořen v Kalifornii." }, - "buyCoinSwitch": { - "message": "Kúpiť na CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch je jedno miesto, kde si môžete vymieňať viac ako 300 kryptomien za najlepšiu cenu." - }, "buyWithWyre": { "message": "Kúpte ETH s Wyre" }, @@ -218,9 +212,6 @@ "connectingToRopsten": { "message": "Připojuji se k Ropsten Test Network" }, - "continueToCoinSwitch": { - "message": "Pokračovať na CoinSwitch" - }, "continueToWyre": { "message": "Pokračovať na Wyre" }, diff --git a/app/_locales/sl/messages.json b/app/_locales/sl/messages.json index cf1b3ad00..8c92173c0 100644 --- a/app/_locales/sl/messages.json +++ b/app/_locales/sl/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask je zasnovan in ustvarjen v Kaliforniji." }, - "buyCoinSwitch": { - "message": "Kupi na CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch je destinacija na enem mestu za izmenjavo več kot 300 kriptokotovitev po najboljši hitrosti." - }, "buyWithWyre": { "message": "Kupi ETH z Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Povezovanje na testno omrežje Ropsten" }, - "continueToCoinSwitch": { - "message": "Nadaljuj na CoinSwitch" - }, "continueToWyre": { "message": "Nadaljuj na Wyre" }, diff --git a/app/_locales/sr/messages.json b/app/_locales/sr/messages.json index 730f4b5e4..bb2276471 100644 --- a/app/_locales/sr/messages.json +++ b/app/_locales/sr/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask je dizajniran i izgrađen u Kaliforniji." }, - "buyCoinSwitch": { - "message": "Kupujte na CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch je odredište gde na jednom mestu možete razmeniti više od 300 kripto valuta po najboljem kursu." - }, "buyWithWyre": { "message": "Kupite ETH preko servisa Wyre" }, @@ -221,9 +215,6 @@ "connectingToRopsten": { "message": "Povezuje se na Ropsten Test mrežu" }, - "continueToCoinSwitch": { - "message": "Nastavi na CoinSwitch" - }, "continueToWyre": { "message": "Nastavite ka Wyre" }, diff --git a/app/_locales/sv/messages.json b/app/_locales/sv/messages.json index bb5e8e5a5..d902d2fe2 100644 --- a/app/_locales/sv/messages.json +++ b/app/_locales/sv/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask är skapat och utformat i Kalifornien." }, - "buyCoinSwitch": { - "message": "Köp på CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch är allt-i-ett-platsen för att växla mer än 300 kryptovalutor till bästa kurs." - }, "buyWithWyre": { "message": "Köp ETH med Wyre" }, @@ -218,9 +212,6 @@ "connectingToRopsten": { "message": "Ansluter till Ropsten Test Network" }, - "continueToCoinSwitch": { - "message": "Fortsätt till CoinSwitch" - }, "continueToWyre": { "message": "Fortsätt till Wyre" }, diff --git a/app/_locales/sw/messages.json b/app/_locales/sw/messages.json index 4244565b8..25911569a 100644 --- a/app/_locales/sw/messages.json +++ b/app/_locales/sw/messages.json @@ -143,12 +143,6 @@ "builtInCalifornia": { "message": "MetaMask imeundwa na kutengenezwa California." }, - "buyCoinSwitch": { - "message": "Nunua kwenye CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch ni kituo cha kubadilisha fedha za kidijitali zaidi ya 300 kwa bei nzuri kabisa." - }, "buyWithWyre": { "message": "Nunua ETH kwa kutumia Wyre" }, @@ -218,9 +212,6 @@ "connectingToRopsten": { "message": "Inaunganisha kwenye Mtandao wa Majaribio wa Ropsten" }, - "continueToCoinSwitch": { - "message": "Endelea kwenye CoinSwitch" - }, "continueToWyre": { "message": "Endelea kwenye Wyre" }, diff --git a/app/_locales/ta/messages.json b/app/_locales/ta/messages.json index f0ca60e9c..efb10b800 100644 --- a/app/_locales/ta/messages.json +++ b/app/_locales/ta/messages.json @@ -58,12 +58,6 @@ "builtInCalifornia": { "message": "மேடமஸ்க் வடிவமைக்கப்பட்டு கலிபோர்னியாவில் கட்டப்பட்டுள்ளது." }, - "buyCoinSwitch": { - "message": "நாணயம் ஸ்விட்சில் வாங்கவும்" - }, - "buyCoinSwitchExplainer": { - "message": "சிறந்த விகிதத்தில் 300 க்கும் அதிகமான cryptocurrencies ஐ பரிமாறிக்கொள்ள ஒரு நாணயமாற்று இலக்கு நாணயம் ஸ்விட்ச் ஆகும்." - }, "cancel": { "message": "ரத்து செய்" }, @@ -94,9 +88,6 @@ "connectingToRopsten": { "message": "ரொப்ஸ்டென் டெஸ்ட் நெட்வொர்க்குடன் இணைக்கிறது" }, - "continueToCoinSwitch": { - "message": "நாணயம் மாறாமல் தொடர்க" - }, "contractDeployment": { "message": "ஒப்பந்த வரிசைப்படுத்தல்" }, diff --git a/app/_locales/th/messages.json b/app/_locales/th/messages.json index f54947489..951958eff 100644 --- a/app/_locales/th/messages.json +++ b/app/_locales/th/messages.json @@ -52,12 +52,6 @@ "builtInCalifornia": { "message": "MetaMask ออกแบบและพัฒนาที่แคลิฟอร์เนีย" }, - "buyCoinSwitch": { - "message": "ซื้อด้วย CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch เป็นจุดหมายปลายทางแบบครบวงจรในการแลกเปลี่ยนสกุลเงินมากกว่า 300 ครั้งในอัตราที่ดีที่สุด" - }, "cancel": { "message": "ยกเลิก" }, @@ -88,9 +82,6 @@ "connectingToRopsten": { "message": "เชื่อมต่อกับเครือข่ายทดสอบ Ropsten" }, - "continueToCoinSwitch": { - "message": "ไปที่ CoinSwitch" - }, "continueToWyre": { "message": "ไปที่ Wyre" }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 5868000c8..929aa00aa 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -49,12 +49,6 @@ "builtInCalifornia": { "message": "MetaMask California'da tasarlandı ve yaratıldı" }, - "buyCoinSwitch": { - "message": "CoinSwitch'de satın al" - }, - "buyCoinSwitchExplainer": { - "message": "Cairnswich, 300'den fazla kriptona en iyi oranda eşlik eden tek durak noktasıdır." - }, "cancel": { "message": "Vazgeç" }, @@ -79,9 +73,6 @@ "connectingToRopsten": { "message": "Ropsten Test Ağına bağlanıyor" }, - "continueToCoinSwitch": { - "message": "CoinSwitch'e devam et" - }, "contractDeployment": { "message": "Sözleşme kurulumu" }, diff --git a/app/_locales/uk/messages.json b/app/_locales/uk/messages.json index 958376615..53c845fe1 100644 --- a/app/_locales/uk/messages.json +++ b/app/_locales/uk/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask розроблено й створено в Каліфорнії." }, - "buyCoinSwitch": { - "message": "Купувати на CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch це точка призначення з однією зупинкою для обміну більш ніж 300 криптовалют за найкращими курсами. " - }, "buyWithWyre": { "message": "Купити ETH через Wyre" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "Під'єднуємось до Тестової мережі Ropsten" }, - "continueToCoinSwitch": { - "message": "Продовжити в CoinSwitch" - }, "continueToWyre": { "message": "Продовжити у Wyre" }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index cfdcf467e..ca18217ee 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -34,12 +34,6 @@ "balance": { "message": "Số dư:" }, - "buyCoinSwitch": { - "message": "Mua trên CoinSwitch" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch là điểm đến duy nhất để trao đổi hơn 300 tiền điện tử với tốc độ tốt nhất." - }, "cancel": { "message": "Hủy" }, @@ -49,9 +43,6 @@ "confirmPassword": { "message": "Xác nhận mật khẩu" }, - "continueToCoinSwitch": { - "message": "Tiếp tục đến CoinSwitch" - }, "contractDeployment": { "message": "Triển khai hợp đồng" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 493c98310..6330781c6 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask在加利福尼亚设计和制造。" }, - "buyCoinSwitch": { - "message": "在CoinSwitch上购买" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch是以最优惠的价格交换超过300种加密货币的一站式目的地。" - }, "buyWithWyre": { "message": "使用 Wyre 购买 ETH" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "正在连接到Ropsten测试网络" }, - "continueToCoinSwitch": { - "message": "继续访问 CoinSwitch" - }, "continueToWyre": { "message": "继续前往 Wyre" }, diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index c2cad7c58..3f4ec252d 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -146,12 +146,6 @@ "builtInCalifornia": { "message": "MetaMask 是在加州設計製造" }, - "buyCoinSwitch": { - "message": "在CoinSwitch上购买" - }, - "buyCoinSwitchExplainer": { - "message": "CoinSwitch是以最优惠的价格交换超过300种加密货币的一站式目的地。" - }, "buyWithWyre": { "message": "用 Wyre 購買 ETH" }, @@ -224,9 +218,6 @@ "connectingToRopsten": { "message": "連線到 Ropsten 測試網路" }, - "continueToCoinSwitch": { - "message": "繼續前往 CoinSwitch" - }, "continueToWyre": { "message": "繼續至 Wyre" }, diff --git a/app/images/coinswitch_logo.png b/app/images/coinswitch_logo.png deleted file mode 100644 index d13d55c32c2ee3d19cc3de919daee23234d2b735..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1623 zcmV-d2B`UoP)x00qNIL_t(|UhSIeZtN%!gt=ob#=QU2 z?j&(s?lc2Z&#V;frhc8%!AAX=0-8aI^rt`l$prgQQU5jNqw0sEZBC8ln%(t7Hk2Wl zhps>|#<*cO{0~9*PgSK%)z#n)AIhYy`wA8oMAMAt@FyZPr*E-wNC3@eL9S9$hxVYj z+TNk<;KV-SSHONW8d3cKXvnwt?s-!x_75FjsLyahQ$%+XJkF-|>fs^%1*AWhX6Yfn zaO29G^B|Y2{f83rM(RZVSVHY_1{DoY1=ae8PUx+=d~&r_&0XQe#JHqc}c19uv%0;ouj%V!Z(Fii~+qraFH%Cr_xwxBwNn%o?! zCQuW>=sLH0>@0{Ooh4Agl*>B-RP<_Tu=#UFMCKbEba_Ls6R2HJp=PX&hXFDRSj6fW z%OnW*3!s82R~6dddCX9h*$zHrG9aGOGpHVbI8>m=+nvY%Znlp2*dVgAV3k3Q9ont6 zb?fL?1~q~yk-HYE0;U71VFJ~Drq_m0$7^}fSR&zn&)tt_5X=lJwMTq?e; z1Zu%Yhd2dao(=LegX$8V~sF6;L&#>F) zOI(;hRT*xcLG9cJd|8LlsW~$m380>@WL}IuDFYP|?WBsEAm!~M+v+XY?#)pbOfgizyh zM$IS`pNyn1h3Ymy;ZQ?|Qf*KDe-NuC_#fp|l|Y62-TRM-4!s z^0DXlF!uj;cmH1De;lS{5mbu;Z3)%uyPiYs$dCze^mM}2&!J*4XbzPiVfz}k=Ysn~ zzWaZN`vp*OzA%T%HHTW%OmRBj*acLK2Fsx0{gdObaI2s41^Dtm#&Q)vMcZ!P3{_2~ zr%>ApDza=GD(p)Y@BW89>-Eo@{~O%@|ALAd08pV4IaTgYY}12MH~&Yt|2IL+OZ(T? z?5|J*04l+1Q>O~d{|)X3-+0Zl^;bcCeWBXdP*DQ_DpfvozbP^QN4Os|K~kBxU%pV; zH$vSe?*k4m-BPi08$ji9VF%UnGwpP9zXHn&_y6l#s$}n)Z~nLS=0DFi|7{5sH2|Ov zRW7WJum4z_;QyN7e);BqQs0Qn)Uqs7qqI!Dgc^WDo!imzH4J-(#N00}Q{(%fI`)~F z>f{_N!8lW>r~w#M7wl1{neU^5zjQtYzxO~Th@q;u9IAzJr_MBMsH6sCv3e%dOgV4a^14@m!pZWigL0wZl zUb>)`I+LgCeVtxmTSKMGy&-dV_YD>wE}I_iANaq>psw!U`S$Lsl+`IJqZgMg*HDp~ zp_gZ21xzyB|Ln*R?w3PFdZQsDhssaik}V?~(WA-UloCNz7H|OeWa_oeh%*1DVM%)k zpsvzOwMfcTt`cn3+T!jxmpSaNcY7H1RuyY)o8I*1SHW?A-6^5Q>1k_QQNKff`UgOm V3$nb{4om<5002ovPDHLkV1ncL2BQD~ diff --git a/app/scripts/lib/buy-eth-url.js b/app/scripts/lib/buy-eth-url.js index 674d031fa..9c2e1c522 100644 --- a/app/scripts/lib/buy-eth-url.js +++ b/app/scripts/lib/buy-eth-url.js @@ -18,8 +18,6 @@ export default function getBuyEthUrl({ network, address, service }) { switch (service) { case 'wyre': return `https://pay.sendwyre.com/purchase?dest=ethereum:${address}&destCurrency=ETH&accountId=AC-7AG3W4XH4N2&paymentMethod=debit-card` - case 'coinswitch': - return `https://metamask.coinswitch.co/?address=${address}&to=eth` case 'metamask-faucet': return 'https://faucet.metamask.io/' case 'rinkeby-faucet': diff --git a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js b/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js index f2cc61bfc..a0043a539 100644 --- a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js +++ b/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js @@ -12,7 +12,6 @@ export default class DepositEtherModal extends Component { static propTypes = { network: PropTypes.string.isRequired, toWyre: PropTypes.func.isRequired, - toCoinSwitch: PropTypes.func.isRequired, address: PropTypes.string.isRequired, toFaucet: PropTypes.func.isRequired, hideWarning: PropTypes.func.isRequired, @@ -87,7 +86,7 @@ export default class DepositEtherModal extends Component { } render() { - const { network, toWyre, toCoinSwitch, address, toFaucet } = this.props + const { network, toWyre, address, toFaucet } = this.props const isTestNetwork = ['3', '4', '5', '42'].find((n) => n === network) const networkName = getNetworkDisplayName(network) @@ -111,31 +110,6 @@ export default class DepositEtherModal extends Component {

- {this.renderRow({ - logo: ( - - ), - title: this.context.t('directDepositEther'), - text: this.context.t('directDepositEtherExplainer'), - buttonLabel: this.context.t('viewAccount'), - onButtonClick: () => this.goToAccountDetailsModal(), - })} - {this.renderRow({ - logo: , - title: this.context.t('testFaucet'), - text: this.faucetRowText(networkName), - buttonLabel: this.context.t('getEther'), - onButtonClick: () => toFaucet(network), - hide: !isTestNetwork, - })} {this.renderRow({ logo: (
), - title: this.context.t('buyCoinSwitch'), - text: this.context.t('buyCoinSwitchExplainer'), - buttonLabel: this.context.t('continueToCoinSwitch'), - onButtonClick: () => { - this.context.metricsEvent({ - eventOpts: { - category: 'Accounts', - action: 'Deposit Ether', - name: 'Click buy Ether via CoinSwitch', - }, - }) - toCoinSwitch(address) - }, - hide: isTestNetwork, + title: this.context.t('directDepositEther'), + text: this.context.t('directDepositEtherExplainer'), + buttonLabel: this.context.t('viewAccount'), + onButtonClick: () => this.goToAccountDetailsModal(), + })} + {this.renderRow({ + logo: , + title: this.context.t('testFaucet'), + text: this.faucetRowText(networkName), + buttonLabel: this.context.t('getEther'), + onButtonClick: () => toFaucet(network), + hide: !isTestNetwork, })}
diff --git a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js b/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js index aac9cd8ae..abee66e48 100644 --- a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js +++ b/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js @@ -19,9 +19,6 @@ function mapDispatchToProps(dispatch) { toWyre: (address) => { dispatch(buyEth({ service: 'wyre', address })) }, - toCoinSwitch: (address) => { - dispatch(buyEth({ service: 'coinswitch', address })) - }, hideModal: () => { dispatch(hideModal()) }, From 302b7dd731e15cc324945fcb0e460f5ea5ccaeb5 Mon Sep 17 00:00:00 2001 From: Thomas Huang Date: Mon, 16 Nov 2020 12:07:48 -0800 Subject: [PATCH 12/12] Move add contact button in fullscreen/expanded view lower. (#9883) * Move add contact button in fullscreen/expanded view. Fixes #9868 Move the add contact button that is overlapping (x)/close setting icon lower, on the same line as Contacts in fullscreen/expanded view. --- ui/app/pages/settings/contact-list-tab/index.scss | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ui/app/pages/settings/contact-list-tab/index.scss b/ui/app/pages/settings/contact-list-tab/index.scss index f15b9c485..aef7c208c 100644 --- a/ui/app/pages/settings/contact-list-tab/index.scss +++ b/ui/app/pages/settings/contact-list-tab/index.scss @@ -221,7 +221,7 @@ .address-book-add-button { &__button { position: absolute; - top: 10px; + top: 80px; right: 16px; height: 56px; width: 56px; @@ -235,6 +235,10 @@ margin-right: 5px; cursor: pointer; box-shadow: 0 2px 16px rgba(0, 0, 0, 0.25); + + @media screen and (max-width: 576px) { + top: 10px; + } } }