1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 11:22:43 +02:00

Merge remote-tracking branch 'origin/develop' into Version-v8.0.0

* origin/develop:
  Restore list item title attributes (#8858)
  Fix mobile sync redirect (#8860)
  Align copy tooltip text and icon (#8861)
  Update inpage provider, deprecation warnings (#8854)
  Update test-dapp (#8856)
  Return after 'reject' in Promise constructor (#8857)
  Replace removed 'copy-to-clipboard' icon (#8853)
  Stop upper-casing exported private key (#8850)
This commit is contained in:
Mark Stacey 2020-06-24 19:42:34 -03:00
commit b34dbe9ae1
15 changed files with 107 additions and 44 deletions

View File

@ -14,7 +14,7 @@ export default function setupDappAutoReload (web3, observable) {
lastTimeUsed = Date.now()
// show warning once on web3 access
if (!hasBeenWarned && key !== 'currentProvider') {
console.warn(`MetaMask: We will soon stop injecting web3. For more information, see: https://medium.com/metamask/no-longer-injecting-web3-js-4a899ad6e59e`)
console.warn(`MetaMask: We will stop injecting web3 in Q4 2020.\nPlease see this article for more information: https://medium.com/metamask/no-longer-injecting-web3-js-4a899ad6e59e`)
hasBeenWarned = true
}
// return value normally

View File

@ -82,7 +82,7 @@ export default class DecryptMessageManager extends EventEmitter {
addUnapprovedMessageAsync (msgParams, req) {
return new Promise((resolve, reject) => {
if (!msgParams.from) {
reject(new Error('MetaMask Decryption: from field is required.'))
return reject(new Error('MetaMask Decryption: from field is required.'))
}
const msgId = this.addUnapprovedMessage(msgParams, req)
this.once(`${msgId}:finished`, (data) => {

View File

@ -79,7 +79,7 @@ export default class EncryptionPublicKeyManager extends EventEmitter {
addUnapprovedMessageAsync (address, req) {
return new Promise((resolve, reject) => {
if (!address) {
reject(new Error('MetaMask Message: address field is required.'))
return reject(new Error('MetaMask Message: address field is required.'))
}
const msgId = this.addUnapprovedMessage(address, req)
this.once(`${msgId}:finished`, (data) => {

View File

@ -85,7 +85,7 @@ export default class PersonalMessageManager extends EventEmitter {
addUnapprovedMessageAsync (msgParams, req) {
return new Promise((resolve, reject) => {
if (!msgParams.from) {
reject(new Error('MetaMask Message Signature: from field is required.'))
return reject(new Error('MetaMask Message Signature: from field is required.'))
}
const msgId = this.addUnapprovedMessage(msgParams, req)
this.once(`${msgId}:finished`, (data) => {

View File

@ -78,7 +78,7 @@
"@metamask/eth-ledger-bridge-keyring": "^0.2.6",
"@metamask/eth-token-tracker": "^2.0.0",
"@metamask/etherscan-link": "^1.1.0",
"@metamask/inpage-provider": "^5.0.0",
"@metamask/inpage-provider": "^5.2.0",
"@popperjs/core": "^2.4.0",
"@reduxjs/toolkit": "^1.3.2",
"@sentry/browser": "^5.11.1",
@ -189,7 +189,7 @@
"@babel/register": "^7.5.5",
"@metamask/eslint-config": "^1.1.0",
"@metamask/forwarder": "^1.1.0",
"@metamask/test-dapp": "^1.0.1",
"@metamask/test-dapp": "^2.1.1",
"@sentry/cli": "^1.49.0",
"@storybook/addon-actions": "^5.3.14",
"@storybook/addon-backgrounds": "^5.3.14",

View File

@ -97,7 +97,7 @@ const AssetListItem = ({
data-testid={dataTestId}
title={primary}
titleIcon={titleIcon}
subtitle={<h3>{secondary}</h3>}
subtitle={<h3 title={secondary}>{secondary}</h3>}
onClick={onClick}
icon={(
<Identicon

View File

@ -132,7 +132,7 @@ export default function TransactionListItem ({ transactionGroup, isEarliestNonce
date={date}
status={status}
/>
<span className={subtitleContainsOrigin ? 'transaction-list-item__origin' : 'transaction-list-item__address'}>
<span className={subtitleContainsOrigin ? 'transaction-list-item__origin' : 'transaction-list-item__address'} title={subtitle}>
{subtitle}
</span>
</h3>

View File

@ -2,6 +2,7 @@ import React, { Component } from 'react'
import PropTypes from 'prop-types'
import copyToClipboard from 'copy-to-clipboard'
import { exportAsFile } from '../../../helpers/utils/util'
import Copy from '../icon/copy-icon.component'
class ExportTextContainer extends Component {
render () {
@ -20,7 +21,7 @@ class ExportTextContainer extends Component {
className="export-text-container__button export-text-container__button--copy"
onClick={() => copyToClipboard(text)}
>
<img src="images/copy-to-clipboard.svg" alt="" />
<Copy size={17} color="#3098DC" />
<div className="export-text-container__button-text">
{t('copyToClipboard')}
</div>

View File

@ -23,7 +23,7 @@ export default function ListItem ({
{icon}
</div>
)}
<div className="list-item__heading">
<div className="list-item__heading" title={title}>
<h2>{ title }</h2>
{titleIcon && (
<div className="list-item__heading-wrap">

View File

@ -0,0 +1,75 @@
import { shallow } from 'enzyme'
import React from 'react'
import ListItem from '../list-item.component'
import assert from 'assert'
import Sinon from 'sinon'
import Preloader from '../../icon/preloader/preloader-icon.component'
import Send from '../../icon/send-icon.component'
const TITLE = 'Hello World'
const SUBTITLE = <p>I am a list item</p>
const CLASSNAME = 'list-item-test'
const RIGHT_CONTENT = <p>Content rendered to the right</p>
const CHILDREN = <button>I am a button</button>
const MID_CONTENT = <p>Content rendered in the middle</p>
describe('ListItem', function () {
let wrapper
let clickHandler
before(function () {
clickHandler = Sinon.fake()
wrapper = shallow(
<ListItem
className={CLASSNAME}
title={TITLE}
data-testid="test-id"
subtitle={SUBTITLE}
rightContent={RIGHT_CONTENT}
midContent={MID_CONTENT}
icon={<Send />}
titleIcon={<Preloader />}
onClick={clickHandler}
>
{CHILDREN}
</ListItem>
)
})
it('includes the data-testid', function () {
assert.equal(wrapper.props()['data-testid'], 'test-id')
})
it(`renders "${TITLE}" title`, function () {
assert.equal(wrapper.find('.list-item__heading h2').text(), TITLE)
})
it('adds html title to heading element', function () {
assert.equal(wrapper.find('.list-item__heading').props().title, TITLE)
})
it(`renders "I am a list item" subtitle`, function () {
assert.equal(wrapper.find('.list-item__subheading').text(), 'I am a list item')
})
it('attaches external className', function () {
assert(wrapper.props().className.includes(CLASSNAME))
})
it('renders content on the right side of the list item', function () {
assert.equal(wrapper.find('.list-item__right-content p').text(), 'Content rendered to the right')
})
it('renders content in the middle of the list item', function () {
assert.equal(wrapper.find('.list-item__mid-content p').text(), 'Content rendered in the middle')
})
it('renders list item actions', function () {
assert.equal(wrapper.find('.list-item__actions button').text(), 'I am a button')
})
it('renders the title icon', function () {
assert(wrapper.find(Preloader))
})
it('renders the list item icon', function () {
assert(wrapper.find(Send))
})
it('handles click action and fires onClick', function () {
wrapper.simulate('click')
assert.equal(clickHandler.callCount, 1)
})
after(function () {
Sinon.restore()
})
})

View File

@ -216,7 +216,6 @@
overflow: hidden;
resize: none;
padding: 9px 13px 8px;
text-transform: uppercase;
}
.modal-close-x::after {

View File

@ -173,12 +173,12 @@
padding: 5px;
border-radius: 5px;
position: relative;
&-text {
font-size: 0.7em;
height: 115px;
}
&-cover {
background-color: white;
opacity: 0.75;
@ -187,7 +187,7 @@
width: 100%;
top: 0px;
}
&-lock {
position: absolute;
height: 100%;
@ -202,12 +202,12 @@
top: calc(50% - 34px);
border-radius: 3px;
}
&--pressed {
display: none;
}
}
&-lock-text {
width: 200px;
font-size: 0.75em;
@ -219,7 +219,7 @@
line-height: 1em;
border-radius: 3px;
}
&-copy {
justify-content: space-evenly;
font-size: 0.75em;
@ -228,12 +228,12 @@
display: flex;
cursor: pointer;
}
&-copy-text {
margin-right: 10px;
display: inline;
}
&-copy-tooltip {
float: right;
}
@ -258,7 +258,7 @@
margin-right: 1.2rem;
}
}
&__visual {
display: flex;
flex-direction: row;

View File

@ -7,6 +7,7 @@ import AccountListItem from '../send/account-list-item/account-list-item.compone
import Button from '../../components/ui/button'
import Identicon from '../../components/ui/identicon'
import Tooltip from '../../components/ui/tooltip-v2'
import Copy from '../../components/ui/icon/copy-icon.component'
import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../app/scripts/lib/enums'
import { getEnvironmentType } from '../../../../app/scripts/lib/util'
@ -267,13 +268,14 @@ export default class ConfirmDecryptMessage extends Component {
position="bottom"
title={hasCopied ? t('copiedExclamation') : t('copyToClipboard')}
wrapperClassName="request-decrypt-message__message-copy-tooltip"
style={{ display: 'flex', alignItems: 'center' }}
>
<div
className="request-decrypt-message__message-copy-text"
>
{t('decryptCopy')}
</div>
<img src="images/copy-to-clipboard.svg" />
<Copy size={17} color="#3098DC" />
</Tooltip>
</div>
)

View File

@ -19,7 +19,7 @@ const mapStateToProps = (state) => {
} = state
return {
mostRecentOverviewpage: getMostRecentOverviewPage(state),
mostRecentOverviewPage: getMostRecentOverviewPage(state),
selectedAddress,
}
}

View File

@ -1696,10 +1696,10 @@
resolved "https://registry.yarnpkg.com/@metamask/forwarder/-/forwarder-1.1.0.tgz#13829d8244bbf19ea658c0b20d21a77b67de0bdd"
integrity sha512-Hggj4y0QIjDzKGTXzarhEPIQyFSB2bi2y6YLJNwaT4JmP30UB5Cj6gqoY0M4pj3QT57fzp0BUuGp7F/AUe28tw==
"@metamask/inpage-provider@^5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@metamask/inpage-provider/-/inpage-provider-5.0.0.tgz#f3961ceb02821255785fe20b1b676bfd944532d7"
integrity sha512-DjQy/hJPKwEhk+L/XPHfR6bSTWsGGXjHCQ3Q/LgieQX/Kv91yyMu+QUu+tWuVi0qX0dSRmaTnFNCF9FWNV1XgA==
"@metamask/inpage-provider@^5.2.0":
version "5.2.0"
resolved "https://registry.yarnpkg.com/@metamask/inpage-provider/-/inpage-provider-5.2.0.tgz#a288d473e7374b1b227ea70d888e258854378c28"
integrity sha512-KyMfHcu3LqgxqS2hsxUxfIDjBQRJwOwhK6wOxOtAIRQLz4+Rns0Xt5R/Nk//U/JEskrHnNadTBgWOFCp3YzgJQ==
dependencies:
eth-json-rpc-errors "^2.0.2"
fast-deep-equal "^2.0.1"
@ -1711,19 +1711,10 @@
pump "^3.0.0"
safe-event-emitter "^1.0.1"
"@metamask/onboarding@^0.2.1":
version "0.2.1"
resolved "https://registry.yarnpkg.com/@metamask/onboarding/-/onboarding-0.2.1.tgz#76e864634d6436a486fcfa743f09a25b1934a11e"
integrity sha512-wSwgkIfVHM6IWja0xfNbK+wMFweOazNe1Z1RVqS0ZKG5v8vCPT93N5IQF2mKCDD+RnBpremE1VYslPPQxQz25g==
dependencies:
bowser "^2.5.4"
"@metamask/test-dapp@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@metamask/test-dapp/-/test-dapp-1.0.1.tgz#67961a53640faca827422fd7bc467d5b2ceb0292"
integrity sha512-RANP75a5UpCXYydaxZQ6p+4A9UjEg6YC5XS6dGatohtIKbGvN3TAU0wPot3GKcxfn9BbnGKMzQ8DIxmkrEaqSg==
dependencies:
"@metamask/onboarding" "^0.2.1"
"@metamask/test-dapp@^2.1.1":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@metamask/test-dapp/-/test-dapp-2.1.1.tgz#c3b79f93c8a698b0904171c5143d0bca1307653a"
integrity sha512-ed0Ma9TLc+wkQYJK5TWslphp58JSi4Rer84LK2RxW1p4aS2LsGKS30pKMFUegj+g9g//7tyh+uFE87pXu4vPkA==
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
@ -5451,11 +5442,6 @@ borc@^2.1.0:
iso-url "~0.4.4"
json-text-sequence "~0.1.0"
bowser@^2.5.4:
version "2.7.0"
resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.7.0.tgz#96eab1fa07fab08c1ec4c75977a7c8ddf8e0fe1f"
integrity sha512-aIlMvstvu8x+34KEiOHD3AsBgdrzg6sxALYiukOWhFvGMbQI6TRP/iY0LMhUrHs56aD6P1G0Z7h45PUJaa5m9w==
boxen@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"