Newer
Older
import { omit } from 'lodash'
import { compose } from 'recompose'
import { showModal, hideModal, setModalError } from '../redux/modal'
modalsVisibility: omit(state.modal, 'props'),
modalError: state.modal.error,
const mapDispatch = modalKey => (dispatch, propss) => ({
hideModal: () => dispatch(hideModal()),
showModal: (modalProps = {}) => dispatch(showModal(modalKey, modalProps)),
setModalError: errorMessage => dispatch(setModalError(errorMessage)),
const mapDispatch2 = (dispatch, props) => ({
hideModal: () => dispatch(hideModal()),
showModal: (modalProps = {}) => {
console.log('showing modal dispatch', modalProps, props)
dispatch(showModal(props.modalKey, modalProps))
},
setModalError: errorMessage => dispatch(setModalError(errorMessage)),
})
export const withModal2 = mapperFn => BaseComponent =>
compose(connect(mapState, mapDispatch2))(baseProps => {
const { modalComponent: Component, overlayColor } = mapperFn(baseProps)
const {
hideModal,
modalProps,
modalError,
modalsVisibility,
modalKey,
...rest
} = baseProps
return (
<React.Fragment>
{modalsVisibility[modalKey] && (
<Modal
{...modalProps}
component={Component}
hideModal={hideModal}
modalError={modalError}
overlayColor={overlayColor}
setModalError={setModalError}
showModal={showModal}
/>
)}
<BaseComponent
hideModal={hideModal}
setModalError={setModalError}
showModal={showModal}
{...rest}
/>
</React.Fragment>
)
})
connect(mapState, mapDispatch(modalKey))(
({
modalsVisibility,
modalProps,
modalError,
hideModal,
showModal,
setModalError,
...rest
}) => (
{modalsVisibility[modalKey] && (
<Modal
{...modalProps}
component={Component}
hideModal={hideModal}
modalError={modalError}
setModalError={setModalError}
showModal={showModal}
<WrappedComponent
hideModal={hideModal}
setModalError={setModalError}
showModal={showModal}
{...rest}
/>
</React.Fragment>