import { connect } from 'react-redux'; import { withRouter } from 'react-router-dom'; import { compose } from 'redux'; import { getEnvironmentType } from '../../../app/scripts/lib/util'; import { ENVIRONMENT_TYPE_POPUP } from '../../../shared/constants/app'; import { DEFAULT_ROUTE, RESTORE_VAULT_ROUTE, } from '../../helpers/constants/routes'; import { tryUnlockMetamask, forgotPassword, markPasswordForgotten, forceUpdateMetamaskState, showModal, } from '../../store/actions'; import UnlockPage from './unlock-page.component'; const mapStateToProps = (state) => { const { metamask: { isUnlocked }, } = state; return { isUnlocked, }; }; const mapDispatchToProps = (dispatch) => { return { forgotPassword: () => dispatch(forgotPassword()), tryUnlockMetamask: (password) => dispatch(tryUnlockMetamask(password)), markPasswordForgotten: () => dispatch(markPasswordForgotten()), forceUpdateMetamaskState: () => forceUpdateMetamaskState(dispatch), showOptInModal: () => dispatch(showModal({ name: 'METAMETRICS_OPT_IN_MODAL' })), }; }; const mergeProps = (stateProps, dispatchProps, ownProps) => { const { // eslint-disable-next-line no-shadow markPasswordForgotten, // eslint-disable-next-line no-shadow tryUnlockMetamask, ...restDispatchProps } = dispatchProps; const { history, onSubmit: ownPropsSubmit, ...restOwnProps } = ownProps; const onImport = async () => { await markPasswordForgotten(); history.push(RESTORE_VAULT_ROUTE); if (getEnvironmentType() === ENVIRONMENT_TYPE_POPUP) { global.platform.openExtensionInBrowser(RESTORE_VAULT_ROUTE); } }; const onSubmit = async (password) => { await tryUnlockMetamask(password); history.push(DEFAULT_ROUTE); }; return { ...stateProps, ...restDispatchProps, ...restOwnProps, onRestore: onImport, onSubmit: ownPropsSubmit || onSubmit, history, }; }; export default compose( withRouter, connect(mapStateToProps, mapDispatchToProps, mergeProps), )(UnlockPage);