import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import noop from 'lodash/noop'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; import { Button, Modal } from 'react-bootstrap'; import ga from '../../../analytics'; import GreenPass from './icons/GreenPass'; import './completion-modal.css'; import { closeModal, submitChallenge, isCompletionModalOpenSelector, successMessageSelector } from '../redux'; const mapStateToProps = createSelector( isCompletionModalOpenSelector, successMessageSelector, (isOpen, message) => ({ isOpen, message }) ); const mapDispatchToProps = function(dispatch) { const dispatchers = { close: () => dispatch(closeModal('completion')), handleKeypress: e => { if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) { dispatch(submitChallenge()); } }, submitChallenge: () => { dispatch(submitChallenge()); } }; return () => dispatchers; }; const propTypes = { close: PropTypes.func.isRequired, handleKeypress: PropTypes.func.isRequired, isOpen: PropTypes.bool, message: PropTypes.string, submitChallenge: PropTypes.func.isRequired }; export class CompletionModal extends PureComponent { render() { const { close, isOpen, submitChallenge, handleKeypress, message } = this.props; if (isOpen) { ga.modalview('/completion-modal'); } return ( {message}
); } } CompletionModal.displayName = 'CompletionModal'; CompletionModal.propTypes = propTypes; export default connect(mapStateToProps, mapDispatchToProps)(CompletionModal);