CR Update: add default props to service and check service in provider

This commit is contained in:
Igor 2019-11-14 12:43:25 -03:00
parent db0f751a68
commit bdb9af5c4b
2 changed files with 28 additions and 3 deletions

View File

@ -32,7 +32,9 @@ const ModalProvider = ({ children, modal: Modal, service }) => {
* @returns void * @returns void
*/ */
useEffect(() => { useEffect(() => {
service.setServiceImplementation({ hide, show }); if (service) {
service.setServiceImplementation({ hide, show });
}
}, [hide, service, show]); }, [hide, service, show]);
/** /**
@ -78,6 +80,10 @@ const ModalProvider = ({ children, modal: Modal, service }) => {
); );
}; };
ModalProvider.defaultProps = {
service: null,
};
ModalProvider.propTypes = { ModalProvider.propTypes = {
children: PropTypes.oneOfType([ children: PropTypes.oneOfType([
PropTypes.arrayOf(PropTypes.node), PropTypes.arrayOf(PropTypes.node),
@ -91,7 +97,7 @@ ModalProvider.propTypes = {
]).isRequired, ]).isRequired,
service: PropTypes.shape({ service: PropTypes.shape({
setServiceImplementation: PropTypes.func, setServiceImplementation: PropTypes.func,
}).isRequired, }),
}; };
/** /**

View File

@ -5,6 +5,8 @@ import React, {
useCallback, useCallback,
useEffect, useEffect,
} from 'react'; } from 'react';
import PropTypes from 'prop-types';
import SnackbarContainer from '../components/snackbar/SnackbarContainer'; import SnackbarContainer from '../components/snackbar/SnackbarContainer';
import SnackbarTypes from '../components/snackbar/SnackbarTypes'; import SnackbarTypes from '../components/snackbar/SnackbarTypes';
@ -31,7 +33,9 @@ const SnackbarProvider = ({ children, service }) => {
* @returns void * @returns void
*/ */
useEffect(() => { useEffect(() => {
service.setServiceImplementation({ hide, show }); if (service) {
service.setServiceImplementation({ hide, show });
}
}, [service, hide, show]); }, [service, hide, show]);
const show = useCallback(options => { const show = useCallback(options => {
@ -100,6 +104,21 @@ const SnackbarProvider = ({ children, service }) => {
); );
}; };
SnackbarProvider.defaultProps = {
service: null,
};
SnackbarProvider.propTypes = {
children: PropTypes.oneOfType([
PropTypes.arrayOf(PropTypes.node),
PropTypes.node,
PropTypes.func,
]).isRequired,
service: PropTypes.shape({
setServiceImplementation: PropTypes.func,
}),
};
/** /**
* *
* High Order Component to use the snackbar methods through a Class Component * High Order Component to use the snackbar methods through a Class Component