Advertisement
Guest User

portal/modal.js

a guest
Mar 1st, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // @flow
  2.  
  3. import React from 'react';
  4. import { connect } from 'react-redux';
  5. import Modal from 'src/components/common/Modal/Modal';
  6. import BuyGameCard from 'src/components/Portal/Store/BuyGameCard/BuyGameCard';
  7. import ActivationDetailsCard from 'src/components/Portal/MyGames/ActivationDetailsCard/ActivationDetailsCard';
  8. import ReleaseNotes from 'src/components/Portal/ReleaseNotes/ReleaseNotes';
  9. import InstallReady from 'src/components/Portal/ReleaseNotes/InstallReady/InstallReady';
  10. import DownloadUpdate from 'src/components/Portal/ReleaseNotes/DownloadUpdate/DownloadUpdate';
  11. import { HIDE_MODAL } from 'src/actions/modal';
  12.  
  13. type PropsT = {
  14.   modalName: React$Element<any>,
  15.   hideModal: Function,
  16. };
  17.  
  18. const modals = {
  19.   BuyGameCard,
  20.   ActivationDetailsCard,
  21.   ReleaseNotes,
  22.   DownloadUpdate,
  23.   InstallReady,
  24. };
  25.  
  26. const PortalModal = (props: PropsT) => {
  27.   const { modalName, hideModal, position, size, data, onHide } = props;
  28.  
  29.   const ModalContent = modals[modalName];
  30.  
  31.   const handleOnHide = () => {
  32.     if (onHide) {
  33.       onHide();
  34.     }
  35.  
  36.     hideModal();
  37.   };
  38.   return (
  39.     <Modal
  40.       show={!!modalName}
  41.       onHide={handleOnHide}
  42.       size={size}
  43.       position={position}
  44.     >
  45.       {ModalContent && <ModalContent {...data} />}
  46.     </Modal>
  47.   );
  48. };
  49.  
  50. function mapStateToProps({
  51.   modal: { modalName, position, size, data, onHide },
  52. }) {
  53.   return {
  54.     modalName,
  55.     position,
  56.     size,
  57.     data,
  58.     onHide,
  59.   };
  60. }
  61.  
  62. const actions = {
  63.   hideModal: () => ({
  64.     type: HIDE_MODAL,
  65.   }),
  66. };
  67.  
  68. export default connect(mapStateToProps, actions)(PortalModal);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement