diff --git a/src/components/Errors/ErrorBoundary.jsx b/src/components/Errors/ErrorBoundary.jsx index d7786c038..74c5d352f 100644 --- a/src/components/Errors/ErrorBoundary.jsx +++ b/src/components/Errors/ErrorBoundary.jsx @@ -4,6 +4,7 @@ import {FormattedMessage, useIntl} from 'react-intl'; import Body from 'components/Body'; import Card from 'components/Card'; +import FormUnavailable from 'components/Errors/FormUnavailable'; import FormMaximumSubmissions from 'components/FormMaximumSubmissions'; import Link from 'components/Link'; import MaintenanceMode from 'components/MaintenanceMode'; @@ -139,13 +140,9 @@ const UnprocessableEntityError = ({wrapper: Wrapper, error}) => { UnprocessableEntityError.propTypes = GenericError.propTypes; const ServiceUnavailableError = ({wrapper: Wrapper, error}) => { - if (!['form-maintenance', 'form-maximum-submissions'].includes(error.code)) { - return ; - } - - // handle maintenance mode forms - if (error.code === 'form-maintenance') { - return ( + const defaultComponent = ; + const componentMapping = { + 'form-maintenance': ( { /> } /> - ); - } + ), + 'form-maximum-submissions': , + service_unavailable: , + }; - // handle submission limit forms - if (error.code === 'form-maximum-submissions') { - return ; - } + return componentMapping[error.code] || defaultComponent; }; // map the error class to the component to render it diff --git a/src/components/Errors/FormUnavailable.jsx b/src/components/Errors/FormUnavailable.jsx new file mode 100644 index 000000000..17c9e6a18 --- /dev/null +++ b/src/components/Errors/FormUnavailable.jsx @@ -0,0 +1,24 @@ +import {FormattedMessage, useIntl} from 'react-intl'; + +import ErrorMessage from 'components/Errors/ErrorMessage'; + +const FormUnavailable = ({wrapper: Wrapper}) => { + const intl = useIntl(); + // Wrapper may be a DOM element, which can't handle + const title = intl.formatMessage({ + description: 'Open Forms service unavailable error title', + defaultMessage: 'Form unavailable', + }); + return ( + + + + + + ); +}; + +export default FormUnavailable;