mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-10-25 12:52:33 +02:00
6f47fece56
Implement `eth_decrypt` and `eth_getEncryptionPublicKey`. This allows decryption backed by the user's private key. The message decryption uses a confirmation flow similar to the messaging signing flow, where the message to be decrypted is also able to be decrypted inline for the user to read directly before confirming.
63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
import { connect } from 'react-redux'
|
|
import { compose } from 'recompose'
|
|
import { withRouter } from 'react-router-dom'
|
|
import { goHome, decryptMsg, cancelDecryptMsg, decryptMsgInline } from '../../store/actions'
|
|
|
|
import {
|
|
getSelectedAccount,
|
|
getCurrentAccountWithSendEtherInfo,
|
|
getSelectedAddress,
|
|
conversionRateSelector,
|
|
} from '../../selectors/selectors.js'
|
|
import { clearConfirmTransaction } from '../../ducks/confirm-transaction/confirm-transaction.duck'
|
|
import ConfirmDecryptMessage from './confirm-decrypt-message.component'
|
|
|
|
function mapStateToProps (state) {
|
|
const { confirmTransaction,
|
|
metamask: { domainMetadata = {} },
|
|
} = state
|
|
|
|
const {
|
|
txData = {},
|
|
} = confirmTransaction
|
|
|
|
return {
|
|
txData: txData,
|
|
domainMetadata: domainMetadata,
|
|
balance: getSelectedAccount(state).balance,
|
|
selectedAccount: getCurrentAccountWithSendEtherInfo(state),
|
|
selectedAddress: getSelectedAddress(state),
|
|
requester: null,
|
|
requesterAddress: null,
|
|
conversionRate: conversionRateSelector(state),
|
|
}
|
|
}
|
|
|
|
function mapDispatchToProps (dispatch) {
|
|
return {
|
|
goHome: () => dispatch(goHome()),
|
|
clearConfirmTransaction: () => dispatch(clearConfirmTransaction()),
|
|
decryptMessage: (msgData, event) => {
|
|
const params = msgData.msgParams
|
|
params.metamaskId = msgData.id
|
|
event.stopPropagation(event)
|
|
return dispatch(decryptMsg(params))
|
|
},
|
|
cancelDecryptMessage: (msgData, event) => {
|
|
event.stopPropagation(event)
|
|
return dispatch(cancelDecryptMsg(msgData))
|
|
},
|
|
decryptMessageInline: (msgData, event) => {
|
|
const params = msgData.msgParams
|
|
params.metamaskId = msgData.id
|
|
event.stopPropagation(event)
|
|
return dispatch(decryptMsgInline(params))
|
|
},
|
|
}
|
|
}
|
|
|
|
export default compose(
|
|
withRouter,
|
|
connect(mapStateToProps, mapDispatchToProps)
|
|
)(ConfirmDecryptMessage)
|