Skip to content

Commit

Permalink
✨ [open-formulieren/open-forms#5033] User friendly error in case of 503
Browse files Browse the repository at this point in the history
  • Loading branch information
stevenbal authored and sergei-maertens committed Jan 28, 2025
1 parent 385816d commit e0948b7
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 13 deletions.
22 changes: 9 additions & 13 deletions src/components/Errors/ErrorBoundary.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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 <GenericError wrapper={Wrapper} error={error} />;
}

// handle maintenance mode forms
if (error.code === 'form-maintenance') {
return (
const defaultComponent = <GenericError wrapper={Wrapper} error={error} />;
const componentMapping = {
'form-maintenance': (
<MaintenanceMode
title={
<FormattedMessage
Expand All @@ -154,13 +151,12 @@ const ServiceUnavailableError = ({wrapper: Wrapper, error}) => {
/>
}
/>
);
}
),
'form-maximum-submissions': <FormMaximumSubmissions />,
service_unavailable: <FormUnavailable wrapper={Wrapper} />,
};

// handle submission limit forms
if (error.code === 'form-maximum-submissions') {
return <FormMaximumSubmissions />;
}
return componentMapping[error.code] || defaultComponent;
};

// map the error class to the component to render it
Expand Down
24 changes: 24 additions & 0 deletions src/components/Errors/FormUnavailable.jsx
Original file line number Diff line number Diff line change
@@ -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 <FormattedMessage />
const title = intl.formatMessage({
description: 'Open Forms service unavailable error title',
defaultMessage: 'Form unavailable',
});
return (
<Wrapper title={title}>
<ErrorMessage modifier="error">
<FormattedMessage
description="Open Forms service unavailable error message"
defaultMessage="Unfortunately, this form is currently unavailable due to an outage. Please try again later."
/>
</ErrorMessage>
</Wrapper>
);
};

export default FormUnavailable;

0 comments on commit e0948b7

Please sign in to comment.