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

Add onbeforeunload and have it call onCancel (#7335)

* Add onbeforeunload and have it call onCancel

* Address PR feedback

* Get integration tests passing again

* Add underscores

* Add ENVIRONMENT_TYPE_NOTIFICATION check

* Add _beforeUnload + metricsEvent
This commit is contained in:
ricky 2019-11-06 12:04:44 -05:00 committed by GitHub
parent b27b568c32
commit 02aebc2e03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,6 +2,8 @@ import PropTypes from 'prop-types'
import React, {PureComponent} from 'react'
import { ProviderPageContainerContent, ProviderPageContainerHeader } from '.'
import { PageContainerFooter } from '../../ui/page-container'
import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../../app/scripts/lib/enums'
import { getEnvironmentType } from '../../../../../app/scripts/lib/util'
export default class ProviderPageContainer extends PureComponent {
static propTypes = {
@ -20,6 +22,9 @@ export default class ProviderPageContainer extends PureComponent {
};
componentDidMount () {
if (getEnvironmentType(window.location.href) === ENVIRONMENT_TYPE_NOTIFICATION) {
window.addEventListener('beforeunload', this._beforeUnload)
}
this.context.metricsEvent({
eventOpts: {
category: 'Auth',
@ -29,6 +34,27 @@ export default class ProviderPageContainer extends PureComponent {
})
}
_beforeUnload () {
const { origin, rejectProviderRequestByOrigin } = this.props
this.context.metricsEvent({
eventOpts: {
category: 'Auth',
action: 'Connect',
name: 'Cancel Connect Request Via Notification Close',
},
})
this._removeBeforeUnload()
rejectProviderRequestByOrigin(origin)
}
_removeBeforeUnload () {
window.removeEventListener('beforeunload', this._beforeUnload)
}
componentWillUnmount () {
this._removeBeforeUnload()
}
onCancel = () => {
const { origin, rejectProviderRequestByOrigin } = this.props
this.context.metricsEvent({
@ -38,6 +64,7 @@ export default class ProviderPageContainer extends PureComponent {
name: 'Canceled',
},
})
this._removeBeforeUnload()
rejectProviderRequestByOrigin(origin)
}
@ -50,6 +77,7 @@ export default class ProviderPageContainer extends PureComponent {
name: 'Confirmed',
},
})
this._removeBeforeUnload()
approveProviderRequestByOrigin(origin)
}