mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
commit
3eb6d157f5
@ -2,6 +2,13 @@
|
||||
|
||||
## Current Develop Branch
|
||||
|
||||
## 8.0.2 Fri Jul 03 2020
|
||||
- [#8907](https://github.com/MetaMask/metamask-extension/pull/8907): Tolerate missing or falsey substitutions
|
||||
- [#8908](https://github.com/MetaMask/metamask-extension/pull/8908): Fix activity log inline buttons
|
||||
- [#8909](https://github.com/MetaMask/metamask-extension/pull/8909): Prevent confirming blank suggested token
|
||||
- [#8910](https://github.com/MetaMask/metamask-extension/pull/8910): Handle suggested token resolved elsewhere
|
||||
- [#8913](https://github.com/MetaMask/metamask-extension/pull/8913): Fix Kovan chain ID constant
|
||||
|
||||
## 8.0.1 Thu Jul 02 2020
|
||||
- [#8874](https://github.com/MetaMask/metamask-extension/pull/8874): Fx overflow behaviour of add token list
|
||||
- [#8885](https://github.com/MetaMask/metamask-extension/pull/8885): Show `origin` in connect flow rather than site name
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "__MSG_appName__",
|
||||
"short_name": "__MSG_appName__",
|
||||
"version": "8.0.1",
|
||||
"version": "8.0.2",
|
||||
"manifest_version": 2,
|
||||
"author": "https://metamask.io",
|
||||
"description": "__MSG_appDescription__",
|
||||
|
@ -15,7 +15,7 @@ export const MAINNET_CHAIN_ID = '0x1'
|
||||
export const ROPSTEN_CHAIN_ID = '0x3'
|
||||
export const RINKEBY_CHAIN_ID = '0x4'
|
||||
export const GOERLI_CHAIN_ID = '0x5'
|
||||
export const KOVAN_CHAIN_ID = '0x42'
|
||||
export const KOVAN_CHAIN_ID = '0x2a'
|
||||
|
||||
export const ROPSTEN_DISPLAY_NAME = 'Ropsten'
|
||||
export const RINKEBY_DISPLAY_NAME = 'Rinkeby'
|
||||
|
@ -89,4 +89,7 @@ const main = async () => {
|
||||
}
|
||||
|
||||
main()
|
||||
.catch(console.error)
|
||||
.catch((error) => {
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
||||
|
@ -11,7 +11,7 @@
|
||||
"benchmark:firefox": "SELENIUM_BROWSER=firefox node test/e2e/benchmark.js",
|
||||
"build:test": "yarn build test",
|
||||
"test": "yarn test:unit && yarn lint",
|
||||
"dapp": "node development/static-server.js node_modules/@metamask/test-dapp/website --port 8080",
|
||||
"dapp": "node development/static-server.js node_modules/@metamask/test-dapp/dist --port 8080",
|
||||
"dapp-chain": "GANACHE_ARGS='-b 2' concurrently -k -n ganache,dapp -p '[{time}][{name}]' 'yarn ganache:start' 'sleep 5 && yarn dapp'",
|
||||
"forwarder": "node ./development/static-server.js ./node_modules/@metamask/forwarder/dist/ --port 9010",
|
||||
"dapp-forwarder": "concurrently -k -n forwarder,dapp -p '[{time}][{name}]' 'yarn forwarder' 'yarn dapp'",
|
||||
|
@ -82,7 +82,7 @@ describe('NetworkController', function () {
|
||||
input: '0x4',
|
||||
expected: 'Rinkeby',
|
||||
}, {
|
||||
input: '0x42',
|
||||
input: '0x2a',
|
||||
expected: 'Kovan',
|
||||
}, {
|
||||
input: 'ropsten',
|
||||
|
@ -36,34 +36,32 @@ export default class TransactionActivityLog extends PureComponent {
|
||||
global.platform.openTab({ url: etherscanUrl })
|
||||
}
|
||||
|
||||
renderInlineRetry (index, activity) {
|
||||
renderInlineRetry (index) {
|
||||
const { t } = this.context
|
||||
const { inlineRetryIndex, primaryTransaction = {}, onRetry, isEarliestNonce } = this.props
|
||||
const { status } = primaryTransaction
|
||||
const { id } = activity
|
||||
|
||||
return isEarliestNonce && status !== CONFIRMED_STATUS && index === inlineRetryIndex
|
||||
? (
|
||||
<div
|
||||
className="transaction-activity-log__action-link"
|
||||
onClick={() => onRetry(id)}
|
||||
onClick={onRetry}
|
||||
>
|
||||
{ t('speedUpTransaction') }
|
||||
</div>
|
||||
) : null
|
||||
}
|
||||
|
||||
renderInlineCancel (index, activity) {
|
||||
renderInlineCancel (index) {
|
||||
const { t } = this.context
|
||||
const { inlineCancelIndex, primaryTransaction = {}, onCancel, isEarliestNonce } = this.props
|
||||
const { status } = primaryTransaction
|
||||
const { id } = activity
|
||||
|
||||
return isEarliestNonce && status !== CONFIRMED_STATUS && index === inlineCancelIndex
|
||||
? (
|
||||
<div
|
||||
className="transaction-activity-log__action-link"
|
||||
onClick={() => onCancel(id)}
|
||||
onClick={onCancel}
|
||||
>
|
||||
{ t('speedUpCancellation') }
|
||||
</div>
|
||||
@ -107,8 +105,8 @@ export default class TransactionActivityLog extends PureComponent {
|
||||
>
|
||||
{ activityText }
|
||||
</div>
|
||||
{ this.renderInlineRetry(index, activity) }
|
||||
{ this.renderInlineCancel(index, activity) }
|
||||
{ this.renderInlineRetry(index) }
|
||||
{ this.renderInlineCancel(index) }
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
@ -145,8 +145,6 @@ export default class TransactionListItemDetails extends PureComponent {
|
||||
transactionGroup,
|
||||
showSpeedUp,
|
||||
showRetry,
|
||||
onCancel,
|
||||
onRetry,
|
||||
recipientEns,
|
||||
recipientAddress,
|
||||
rpcPrefs: { blockExplorerUrl } = {},
|
||||
@ -253,8 +251,8 @@ export default class TransactionListItemDetails extends PureComponent {
|
||||
<TransactionActivityLog
|
||||
transactionGroup={transactionGroup}
|
||||
className="transaction-list-item-details__transaction-activity-log"
|
||||
onCancel={onCancel}
|
||||
onRetry={onRetry}
|
||||
onCancel={this.handleCancel}
|
||||
onRetry={this.handleRetry}
|
||||
isEarliestNonce={isEarliestNonce}
|
||||
/>
|
||||
</div>
|
||||
|
@ -43,7 +43,7 @@ export const getMessage = (localeCode, localeMessages, key, substitutions) => {
|
||||
|
||||
const hasSubstitutions = Boolean(substitutions && substitutions.length)
|
||||
const hasReactSubstitutions = hasSubstitutions &&
|
||||
substitutions.some((element) => typeof element === 'function' || typeof element === 'object')
|
||||
substitutions.some((element) => element !== null && (typeof element === 'function' || typeof element === 'object'))
|
||||
|
||||
// perform substitutions
|
||||
if (hasSubstitutions) {
|
||||
@ -55,10 +55,12 @@ export const getMessage = (localeCode, localeMessages, key, substitutions) => {
|
||||
return part
|
||||
}
|
||||
const substituteIndex = Number(subMatch[1]) - 1
|
||||
if (substitutions[substituteIndex]) {
|
||||
return substitutions[substituteIndex]
|
||||
if (substitutions[substituteIndex] == null) {
|
||||
const error = new Error(`Insufficient number of substitutions for message: '${phrase}'`)
|
||||
log.error(error)
|
||||
Sentry.captureException(error)
|
||||
}
|
||||
throw new Error(`Insufficient number of substitutions for message: '${phrase}'`)
|
||||
return substitutions[substituteIndex]
|
||||
})
|
||||
|
||||
phrase = hasReactSubstitutions
|
||||
|
@ -132,14 +132,14 @@ describe('i18n helper', function () {
|
||||
assert.equal(result, `${TEST_SUBSTITUTION_1} - ${TEST_SUBSTITUTION_2} - ${TEST_SUBSTITUTION_3} - ${TEST_SUBSTITUTION_4} - ${TEST_SUBSTITUTION_5}`)
|
||||
})
|
||||
|
||||
it('should throw an error when not passed as many substitutions as a message requires', function () {
|
||||
assert.throws(
|
||||
() => {
|
||||
t(TEST_KEY_5, [ TEST_SUBSTITUTION_1, TEST_SUBSTITUTION_2 ])
|
||||
},
|
||||
Error,
|
||||
`Insufficient number of substitutions for message: '$1 - $2 - $3'`
|
||||
)
|
||||
it('should correctly render falsey substitutions', function () {
|
||||
const result = t(TEST_KEY_4, [ 0, -0, '', false, NaN ])
|
||||
assert.equal(result, '0 - 0 - - false - NaN')
|
||||
})
|
||||
|
||||
it('should render nothing for "null" and "undefined" substitutions', function () {
|
||||
const result = t(TEST_KEY_5, [ null, TEST_SUBSTITUTION_2 ])
|
||||
assert.equal(result, ` - ${TEST_SUBSTITUTION_2} - `)
|
||||
})
|
||||
|
||||
it('should return the correct message when a single react substitution is made', function () {
|
||||
|
@ -3,6 +3,8 @@ import PropTypes from 'prop-types'
|
||||
import Button from '../../components/ui/button'
|
||||
import Identicon from '../../components/ui/identicon'
|
||||
import TokenBalance from '../../components/ui/token-balance'
|
||||
import { getEnvironmentType } from '../../../../app/scripts/lib/util'
|
||||
import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../app/scripts/lib/enums'
|
||||
|
||||
export default class ConfirmAddSuggestedToken extends Component {
|
||||
static contextTypes = {
|
||||
@ -19,9 +21,23 @@ export default class ConfirmAddSuggestedToken extends Component {
|
||||
}
|
||||
|
||||
componentDidMount () {
|
||||
this._checkPendingTokens()
|
||||
}
|
||||
|
||||
componentDidUpdate () {
|
||||
this._checkPendingTokens()
|
||||
}
|
||||
|
||||
_checkPendingTokens () {
|
||||
const { mostRecentOverviewPage, pendingTokens = {}, history } = this.props
|
||||
|
||||
if (Object.keys(pendingTokens).length === 0) {
|
||||
if (Object.keys(pendingTokens).length > 0) {
|
||||
return
|
||||
}
|
||||
|
||||
if (getEnvironmentType() === ENVIRONMENT_TYPE_NOTIFICATION) {
|
||||
global.platform.closeCurrentWindow()
|
||||
} else {
|
||||
history.push(mostRecentOverviewPage)
|
||||
}
|
||||
}
|
||||
@ -122,6 +138,7 @@ export default class ConfirmAddSuggestedToken extends Component {
|
||||
type="secondary"
|
||||
large
|
||||
className="page-container__footer-button"
|
||||
disabled={pendingTokens.length === 0}
|
||||
onClick={() => {
|
||||
addToken(pendingToken)
|
||||
.then(() => removeSuggestedTokens())
|
||||
|
Loading…
Reference in New Issue
Block a user