1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-25 20:02:58 +01:00

Prevent signature request component from canceling hardware wallet signing (#11013)

This commit is contained in:
David Walsh 2021-05-07 15:54:20 -05:00 committed by GitHub
parent f3cc048fea
commit bf76d4e754
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -27,23 +27,25 @@ export default class SignatureRequest extends PureComponent {
};
componentDidMount() {
const { clearConfirmTransaction, cancel } = this.props;
const { metricsEvent } = this.context;
if (getEnvironmentType() === ENVIRONMENT_TYPE_NOTIFICATION) {
window.addEventListener('beforeunload', (event) => {
metricsEvent({
eventOpts: {
category: 'Transactions',
action: 'Sign Request',
name: 'Cancel Sig Request Via Notification Close',
},
});
clearConfirmTransaction();
cancel(event);
});
window.addEventListener('beforeunload', this._beforeUnload);
}
}
_beforeUnload = (event) => {
const { clearConfirmTransaction, cancel } = this.props;
const { metricsEvent } = this.context;
metricsEvent({
eventOpts: {
category: 'Transactions',
action: 'Sign Request',
name: 'Cancel Sig Request Via Notification Close',
},
});
clearConfirmTransaction();
cancel(event);
};
formatWallet(wallet) {
return `${wallet.slice(0, 8)}...${wallet.slice(
wallet.length - 8,
@ -63,6 +65,16 @@ export default class SignatureRequest extends PureComponent {
const { address: fromAddress } = fromAccount;
const { message, domain = {} } = JSON.parse(data);
const onSign = (event) => {
window.removeEventListener('beforeunload', this._beforeUnload);
sign(event);
};
const onCancel = (event) => {
window.removeEventListener('beforeunload', this._beforeUnload);
cancel(event);
};
return (
<div className="signature-request page-container">
<Header fromAccount={fromAccount} />
@ -86,7 +98,7 @@ export default class SignatureRequest extends PureComponent {
</div>
</div>
<Message data={message} />
<Footer cancelAction={cancel} signAction={sign} />
<Footer cancelAction={onCancel} signAction={onSign} />
</div>
);
}