mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge remote-tracking branch 'upstream/develop' into HEAD
This commit is contained in:
commit
3ba3eacbbd
@ -10,6 +10,10 @@
|
|||||||
- [#6914](https://github.com/MetaMask/metamask-extension/pull/6914): Adds Address Book feature
|
- [#6914](https://github.com/MetaMask/metamask-extension/pull/6914): Adds Address Book feature
|
||||||
- [#6928](https://github.com/MetaMask/metamask-extension/pull/6928): Disable Copy Tx ID and block explorer link for transactions without hash
|
- [#6928](https://github.com/MetaMask/metamask-extension/pull/6928): Disable Copy Tx ID and block explorer link for transactions without hash
|
||||||
|
|
||||||
|
## 6.7.3 Thu Jul 18 2019
|
||||||
|
|
||||||
|
- [#6888](https://github.com/MetaMask/metamask-extension/pull/6888): Fix bug with resubmitting unsigned transactions.
|
||||||
|
|
||||||
## 6.7.2 Mon Jul 01 2019
|
## 6.7.2 Mon Jul 01 2019
|
||||||
|
|
||||||
- [#6713](https://github.com/MetaMask/metamask-extension/pull/6713): * Normalize and Validate txParams in TransactionStateManager.addTx too
|
- [#6713](https://github.com/MetaMask/metamask-extension/pull/6713): * Normalize and Validate txParams in TransactionStateManager.addTx too
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "__MSG_appName__",
|
"name": "__MSG_appName__",
|
||||||
"short_name": "__MSG_appName__",
|
"short_name": "__MSG_appName__",
|
||||||
"version": "6.7.2",
|
"version": "6.7.3",
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"author": "https://metamask.io",
|
"author": "https://metamask.io",
|
||||||
"description": "__MSG_appDescription__",
|
"description": "__MSG_appDescription__",
|
||||||
|
@ -182,7 +182,9 @@
|
|||||||
"warnings": {}
|
"warnings": {}
|
||||||
},
|
},
|
||||||
"confirmTransaction": {
|
"confirmTransaction": {
|
||||||
"txData": {},
|
"txData": {
|
||||||
|
"id": 4768706228115573
|
||||||
|
},
|
||||||
"tokenData": {},
|
"tokenData": {},
|
||||||
"methodData": {},
|
"methodData": {},
|
||||||
"tokenProps": {
|
"tokenProps": {
|
||||||
|
@ -280,6 +280,12 @@ describe('MetaMask', function () {
|
|||||||
await delay(regularDelayMs)
|
await delay(regularDelayMs)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('can click through the success screen', async () => {
|
||||||
|
const confirm = await findElement(driver, By.xpath(`//button[contains(text(), 'All Done')]`))
|
||||||
|
await confirm.click()
|
||||||
|
await delay(regularDelayMs)
|
||||||
|
})
|
||||||
|
|
||||||
it('should have the correct amount of eth', async () => {
|
it('should have the correct amount of eth', async () => {
|
||||||
const balances = await findElements(driver, By.css('.currency-display-component__text'))
|
const balances = await findElements(driver, By.css('.currency-display-component__text'))
|
||||||
await driver.wait(until.elementTextMatches(balances[0], /1/), 15000)
|
await driver.wait(until.elementTextMatches(balances[0], /1/), 15000)
|
||||||
|
@ -16,21 +16,20 @@ export default class MultipleNotifications extends PureComponent {
|
|||||||
const { showAll } = this.state
|
const { showAll } = this.state
|
||||||
const { notifications, classNames = [] } = this.props
|
const { notifications, classNames = [] } = this.props
|
||||||
|
|
||||||
|
const notificationsToBeRendered = notifications.filter(notificationConfig => notificationConfig.shouldBeRendered)
|
||||||
|
|
||||||
return (<div
|
return (<div
|
||||||
className={classnames(...classNames, {
|
className={classnames(...classNames, {
|
||||||
'home-notification-wrapper--show-all': showAll,
|
'home-notification-wrapper--show-all': showAll,
|
||||||
'home-notification-wrapper--show-first': !showAll,
|
'home-notification-wrapper--show-first': !showAll,
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{notifications
|
{ notificationsToBeRendered.map(notificationConfig => notificationConfig.component) }
|
||||||
.filter(notificationConfig => notificationConfig.shouldBeRendered)
|
|
||||||
.map(notificationConfig => notificationConfig.component)
|
|
||||||
}
|
|
||||||
<div
|
<div
|
||||||
className="home-notification-wrapper__i-container"
|
className="home-notification-wrapper__i-container"
|
||||||
onClick={() => this.setState({ showAll: !showAll })}
|
onClick={() => this.setState({ showAll: !showAll })}
|
||||||
>
|
>
|
||||||
{notifications.length > 1 ? <i className={classnames('fa fa-sm fa-sort-amount-asc', {
|
{notificationsToBeRendered.length > 1 ? <i className={classnames('fa fa-sm fa-sort-amount-asc', {
|
||||||
'flipped': !showAll,
|
'flipped': !showAll,
|
||||||
})} /> : null}
|
})} /> : null}
|
||||||
</div>
|
</div>
|
||||||
|
@ -73,7 +73,6 @@ function reduceApp (state, action) {
|
|||||||
networksTabSelectedRpcUrl: '',
|
networksTabSelectedRpcUrl: '',
|
||||||
networksTabIsInAddMode: false,
|
networksTabIsInAddMode: false,
|
||||||
loadingMethodData: false,
|
loadingMethodData: false,
|
||||||
showingSeedPhraseBackupAfterOnboarding: false,
|
|
||||||
}, state.appState)
|
}, state.appState)
|
||||||
|
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
@ -757,17 +756,6 @@ function reduceApp (state, action) {
|
|||||||
loadingMethodData: false,
|
loadingMethodData: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
case actions.SHOW_SEED_PHRASE_BACKUP_AFTER_ONBOARDING:
|
|
||||||
return extend(appState, {
|
|
||||||
showingSeedPhraseBackupAfterOnboarding: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
case actions.HIDE_SEED_PHRASE_BACKUP_AFTER_ONBOARDING:
|
|
||||||
return extend(appState, {
|
|
||||||
showingSeedPhraseBackupAfterOnboarding: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return appState
|
return appState
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ const INITIALIZE_CREATE_PASSWORD_ROUTE = '/initialize/create-password'
|
|||||||
const INITIALIZE_IMPORT_WITH_SEED_PHRASE_ROUTE = '/initialize/create-password/import-with-seed-phrase'
|
const INITIALIZE_IMPORT_WITH_SEED_PHRASE_ROUTE = '/initialize/create-password/import-with-seed-phrase'
|
||||||
const INITIALIZE_SELECT_ACTION_ROUTE = '/initialize/select-action'
|
const INITIALIZE_SELECT_ACTION_ROUTE = '/initialize/select-action'
|
||||||
const INITIALIZE_SEED_PHRASE_ROUTE = '/initialize/seed-phrase'
|
const INITIALIZE_SEED_PHRASE_ROUTE = '/initialize/seed-phrase'
|
||||||
|
const INITIALIZE_BACKUP_SEED_PHRASE_ROUTE = '/initialize/backup-seed-phrase'
|
||||||
const INITIALIZE_END_OF_FLOW_ROUTE = '/initialize/end-of-flow'
|
const INITIALIZE_END_OF_FLOW_ROUTE = '/initialize/end-of-flow'
|
||||||
const INITIALIZE_CONFIRM_SEED_PHRASE_ROUTE = '/initialize/seed-phrase/confirm'
|
const INITIALIZE_CONFIRM_SEED_PHRASE_ROUTE = '/initialize/seed-phrase/confirm'
|
||||||
const INITIALIZE_METAMETRICS_OPT_IN_ROUTE = '/initialize/metametrics-opt-in'
|
const INITIALIZE_METAMETRICS_OPT_IN_ROUTE = '/initialize/metametrics-opt-in'
|
||||||
@ -90,4 +91,6 @@ module.exports = {
|
|||||||
CONTACT_MY_ACCOUNTS_VIEW_ROUTE,
|
CONTACT_MY_ACCOUNTS_VIEW_ROUTE,
|
||||||
CONTACT_MY_ACCOUNTS_EDIT_ROUTE,
|
CONTACT_MY_ACCOUNTS_EDIT_ROUTE,
|
||||||
NETWORKS_ROUTE,
|
NETWORKS_ROUTE,
|
||||||
|
INITIALIZE_BACKUP_SEED_PHRASE_ROUTE,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import {
|
|||||||
INITIALIZE_SELECT_ACTION_ROUTE,
|
INITIALIZE_SELECT_ACTION_ROUTE,
|
||||||
INITIALIZE_END_OF_FLOW_ROUTE,
|
INITIALIZE_END_OF_FLOW_ROUTE,
|
||||||
INITIALIZE_METAMETRICS_OPT_IN_ROUTE,
|
INITIALIZE_METAMETRICS_OPT_IN_ROUTE,
|
||||||
|
INITIALIZE_BACKUP_SEED_PHRASE_ROUTE,
|
||||||
} from '../../helpers/constants/routes'
|
} from '../../helpers/constants/routes'
|
||||||
|
|
||||||
export default class FirstTimeFlow extends PureComponent {
|
export default class FirstTimeFlow extends PureComponent {
|
||||||
@ -113,6 +114,16 @@ export default class FirstTimeFlow extends PureComponent {
|
|||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
<Route
|
||||||
|
path={INITIALIZE_BACKUP_SEED_PHRASE_ROUTE}
|
||||||
|
render={props => (
|
||||||
|
<SeedPhrase
|
||||||
|
{ ...props }
|
||||||
|
seedPhrase={seedPhrase}
|
||||||
|
verifySeedPhrase={verifySeedPhrase}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
<Route
|
<Route
|
||||||
path={INITIALIZE_CREATE_PASSWORD_ROUTE}
|
path={INITIALIZE_CREATE_PASSWORD_ROUTE}
|
||||||
render={props => (
|
render={props => (
|
||||||
|
@ -7,9 +7,13 @@ import {
|
|||||||
unlockAndGetSeedPhrase,
|
unlockAndGetSeedPhrase,
|
||||||
verifySeedPhrase,
|
verifySeedPhrase,
|
||||||
} from '../../store/actions'
|
} from '../../store/actions'
|
||||||
|
import {
|
||||||
|
INITIALIZE_BACKUP_SEED_PHRASE_ROUTE,
|
||||||
|
} from '../../helpers/constants/routes'
|
||||||
|
|
||||||
const mapStateToProps = state => {
|
const mapStateToProps = (state, ownProps) => {
|
||||||
const { metamask: { completedOnboarding, isInitialized, isUnlocked, seedPhraseBackedUp }, appState: { showingSeedPhraseBackupAfterOnboarding } } = state
|
const { metamask: { completedOnboarding, isInitialized, isUnlocked, seedPhraseBackedUp } } = state
|
||||||
|
const showingSeedPhraseBackupAfterOnboarding = Boolean(ownProps.location.pathname.match(INITIALIZE_BACKUP_SEED_PHRASE_ROUTE))
|
||||||
|
|
||||||
return {
|
return {
|
||||||
completedOnboarding,
|
completedOnboarding,
|
||||||
|
@ -6,6 +6,7 @@ import ConfirmSeedPhrase from './confirm-seed-phrase'
|
|||||||
import {
|
import {
|
||||||
INITIALIZE_SEED_PHRASE_ROUTE,
|
INITIALIZE_SEED_PHRASE_ROUTE,
|
||||||
INITIALIZE_CONFIRM_SEED_PHRASE_ROUTE,
|
INITIALIZE_CONFIRM_SEED_PHRASE_ROUTE,
|
||||||
|
INITIALIZE_BACKUP_SEED_PHRASE_ROUTE,
|
||||||
DEFAULT_ROUTE,
|
DEFAULT_ROUTE,
|
||||||
} from '../../../helpers/constants/routes'
|
} from '../../../helpers/constants/routes'
|
||||||
import HTML5Backend from 'react-dnd-html5-backend'
|
import HTML5Backend from 'react-dnd-html5-backend'
|
||||||
@ -68,6 +69,16 @@ export default class SeedPhrase extends PureComponent {
|
|||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
<Route
|
||||||
|
exact
|
||||||
|
path={INITIALIZE_BACKUP_SEED_PHRASE_ROUTE}
|
||||||
|
render={props => (
|
||||||
|
<RevealSeedPhrase
|
||||||
|
{ ...props }
|
||||||
|
seedPhrase={seedPhrase || verifiedSeedPhrase}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
</Switch>
|
</Switch>
|
||||||
</div>
|
</div>
|
||||||
</DragDropContextProvider>
|
</DragDropContextProvider>
|
||||||
|
@ -12,7 +12,7 @@ import {
|
|||||||
RESTORE_VAULT_ROUTE,
|
RESTORE_VAULT_ROUTE,
|
||||||
CONFIRM_TRANSACTION_ROUTE,
|
CONFIRM_TRANSACTION_ROUTE,
|
||||||
CONFIRM_ADD_SUGGESTED_TOKEN_ROUTE,
|
CONFIRM_ADD_SUGGESTED_TOKEN_ROUTE,
|
||||||
INITIALIZE_SEED_PHRASE_ROUTE,
|
INITIALIZE_BACKUP_SEED_PHRASE_ROUTE,
|
||||||
} from '../../helpers/constants/routes'
|
} from '../../helpers/constants/routes'
|
||||||
|
|
||||||
export default class Home extends PureComponent {
|
export default class Home extends PureComponent {
|
||||||
@ -43,8 +43,8 @@ export default class Home extends PureComponent {
|
|||||||
viewingUnconnectedDapp: PropTypes.bool.isRequired,
|
viewingUnconnectedDapp: PropTypes.bool.isRequired,
|
||||||
forceApproveProviderRequestByOrigin: PropTypes.func,
|
forceApproveProviderRequestByOrigin: PropTypes.func,
|
||||||
shouldShowSeedPhraseReminder: PropTypes.bool,
|
shouldShowSeedPhraseReminder: PropTypes.bool,
|
||||||
showSeedPhraseBackupAfterOnboarding: PropTypes.bool,
|
|
||||||
rejectProviderRequestByOrigin: PropTypes.func,
|
rejectProviderRequestByOrigin: PropTypes.func,
|
||||||
|
isPopup: PropTypes.bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillMount () {
|
componentWillMount () {
|
||||||
@ -82,8 +82,8 @@ export default class Home extends PureComponent {
|
|||||||
viewingUnconnectedDapp,
|
viewingUnconnectedDapp,
|
||||||
forceApproveProviderRequestByOrigin,
|
forceApproveProviderRequestByOrigin,
|
||||||
shouldShowSeedPhraseReminder,
|
shouldShowSeedPhraseReminder,
|
||||||
showSeedPhraseBackupAfterOnboarding,
|
|
||||||
rejectProviderRequestByOrigin,
|
rejectProviderRequestByOrigin,
|
||||||
|
isPopup,
|
||||||
} = this.props
|
} = this.props
|
||||||
|
|
||||||
if (forgottenPassword) {
|
if (forgottenPassword) {
|
||||||
@ -140,8 +140,11 @@ export default class Home extends PureComponent {
|
|||||||
descriptionText={t('backupApprovalNotice')}
|
descriptionText={t('backupApprovalNotice')}
|
||||||
acceptText={t('backupNow')}
|
acceptText={t('backupNow')}
|
||||||
onAccept={() => {
|
onAccept={() => {
|
||||||
showSeedPhraseBackupAfterOnboarding()
|
if (isPopup) {
|
||||||
history.push(INITIALIZE_SEED_PHRASE_ROUTE)
|
global.platform.openExtensionInBrowser(INITIALIZE_BACKUP_SEED_PHRASE_ROUTE)
|
||||||
|
} else {
|
||||||
|
history.push(INITIALIZE_BACKUP_SEED_PHRASE_ROUTE)
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
infoText={t('backupApprovalInfo')}
|
infoText={t('backupApprovalInfo')}
|
||||||
key="home-backupApprovalNotice"
|
key="home-backupApprovalNotice"
|
||||||
|
@ -7,7 +7,6 @@ import { getCurrentEthBalance } from '../../selectors/selectors'
|
|||||||
import {
|
import {
|
||||||
forceApproveProviderRequestByOrigin,
|
forceApproveProviderRequestByOrigin,
|
||||||
unsetMigratedPrivacyMode,
|
unsetMigratedPrivacyMode,
|
||||||
showSeedPhraseBackupAfterOnboarding,
|
|
||||||
rejectProviderRequestByOrigin,
|
rejectProviderRequestByOrigin,
|
||||||
} from '../../store/actions'
|
} from '../../store/actions'
|
||||||
import { getEnvironmentType } from '../../../../app/scripts/lib/util'
|
import { getEnvironmentType } from '../../../../app/scripts/lib/util'
|
||||||
@ -60,7 +59,6 @@ const mapDispatchToProps = (dispatch) => ({
|
|||||||
unsetMigratedPrivacyMode: () => dispatch(unsetMigratedPrivacyMode()),
|
unsetMigratedPrivacyMode: () => dispatch(unsetMigratedPrivacyMode()),
|
||||||
forceApproveProviderRequestByOrigin: (origin) => dispatch(forceApproveProviderRequestByOrigin(origin)),
|
forceApproveProviderRequestByOrigin: (origin) => dispatch(forceApproveProviderRequestByOrigin(origin)),
|
||||||
rejectProviderRequestByOrigin: origin => dispatch(rejectProviderRequestByOrigin(origin)),
|
rejectProviderRequestByOrigin: origin => dispatch(rejectProviderRequestByOrigin(origin)),
|
||||||
showSeedPhraseBackupAfterOnboarding: () => dispatch(showSeedPhraseBackupAfterOnboarding()),
|
|
||||||
})
|
})
|
||||||
|
|
||||||
export default compose(
|
export default compose(
|
||||||
|
@ -48,7 +48,7 @@ export default class SendContent extends Component {
|
|||||||
maybeRenderAddContact () {
|
maybeRenderAddContact () {
|
||||||
const { t } = this.context
|
const { t } = this.context
|
||||||
const { to, addressBook = [], ownedAccounts = [], showAddToAddressBookModal } = this.props
|
const { to, addressBook = [], ownedAccounts = [], showAddToAddressBookModal } = this.props
|
||||||
const isOwnedAccount = !!ownedAccounts.find(({ address }) => address === to)
|
const isOwnedAccount = !!ownedAccounts.find(({ address }) => address.toLowerCase() === to.toLowerCase())
|
||||||
const contact = addressBook.find(({ address }) => address === to) || {}
|
const contact = addressBook.find(({ address }) => address === to) || {}
|
||||||
|
|
||||||
if (isOwnedAccount || contact.name) {
|
if (isOwnedAccount || contact.name) {
|
||||||
|
@ -377,11 +377,6 @@ var actions = {
|
|||||||
LOADING_TOKEN_PARAMS_FINISHED: 'LOADING_TOKEN_PARAMS_FINISHED',
|
LOADING_TOKEN_PARAMS_FINISHED: 'LOADING_TOKEN_PARAMS_FINISHED',
|
||||||
|
|
||||||
setSeedPhraseBackedUp,
|
setSeedPhraseBackedUp,
|
||||||
showSeedPhraseBackupAfterOnboarding,
|
|
||||||
SHOW_SEED_PHRASE_BACKUP_AFTER_ONBOARDING: 'SHOW_SEED_PHRASE_BACKUP_AFTER_ONBOARDING',
|
|
||||||
hideSeedPhraseBackupAfterOnboarding,
|
|
||||||
HIDE_SEED_PHRASE_BACKUP_AFTER_ONBOARDING: 'HIDE_SEED_PHRASE_BACKUP_AFTER_ONBOARDING',
|
|
||||||
|
|
||||||
verifySeedPhrase,
|
verifySeedPhrase,
|
||||||
SET_SEED_PHRASE_BACKED_UP_TO_TRUE: 'SET_SEED_PHRASE_BACKED_UP_TO_TRUE',
|
SET_SEED_PHRASE_BACKED_UP_TO_TRUE: 'SET_SEED_PHRASE_BACKED_UP_TO_TRUE',
|
||||||
}
|
}
|
||||||
@ -2796,15 +2791,3 @@ function setSeedPhraseBackedUp (seedPhraseBackupState) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function showSeedPhraseBackupAfterOnboarding () {
|
|
||||||
return {
|
|
||||||
type: actions.SHOW_SEED_PHRASE_BACKUP_AFTER_ONBOARDING,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function hideSeedPhraseBackupAfterOnboarding () {
|
|
||||||
return {
|
|
||||||
type: actions.HIDE_SEED_PHRASE_BACKUP_AFTER_ONBOARDING,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user