|
Packit Service |
eebd6f |
import React from "react";
|
|
Packit Service |
eebd6f |
import { FormattedMessage, defineMessages, injectIntl, intlShape } from "react-intl";
|
|
Packit Service |
eebd6f |
import PropTypes from "prop-types";
|
|
Packit Service |
eebd6f |
import history from "../../core/history";
|
|
Packit Service |
eebd6f |
import Link from "../../components/Link/Link";
|
|
Packit Service |
eebd6f |
import s from "./styles.css";
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
const messages = defineMessages({
|
|
Packit Service |
eebd6f |
errorMessage: {
|
|
Packit Service |
eebd6f |
defaultMessage: "Error",
|
|
Packit Service |
eebd6f |
},
|
|
Packit Service |
eebd6f |
pageNotFoundMessage: {
|
|
Packit Service |
eebd6f |
defaultMessage: "Page Not Found",
|
|
Packit Service |
eebd6f |
},
|
|
Packit Service |
eebd6f |
pageNotFoundTitle: {
|
|
Packit Service |
eebd6f |
defaultMessage: "Page not found",
|
|
Packit Service |
eebd6f |
},
|
|
Packit Service |
eebd6f |
oupsTitle: {
|
|
Packit Service |
eebd6f |
defaultMessage: "Oups, something went wrong",
|
|
Packit Service |
eebd6f |
},
|
|
Packit Service |
eebd6f |
});
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
class ErrorPage extends React.Component {
|
|
Packit Service |
eebd6f |
constructor() {
|
|
Packit Service |
eebd6f |
super();
|
|
Packit Service |
eebd6f |
this.goBack = this.goBack.bind(this);
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
componentDidMount() {
|
|
Packit Service |
eebd6f |
const { formatMessage } = this.props.intl;
|
|
Packit Service |
eebd6f |
document.title =
|
|
Packit Service |
eebd6f |
this.props.error && this.props.error.status === 404
|
|
Packit Service |
eebd6f |
? formatMessage(messages.pageNotFoundMessage)
|
|
Packit Service |
eebd6f |
: formatMessage(messages.errorMessage);
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
goBack(event) {
|
|
Packit Service |
eebd6f |
event.preventDefault();
|
|
Packit Service |
eebd6f |
history.goBack();
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
render() {
|
|
Packit Service |
eebd6f |
const { formatMessage } = this.props.intl;
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
if (this.props.error) console.error(this.props.error); // eslint-disable-line no-console
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
const [code, title] =
|
|
Packit Service |
eebd6f |
this.props.error && this.props.error.status === 404
|
|
Packit Service |
eebd6f |
? ["404", formatMessage(messages.pageNotFoundTitle)]
|
|
Packit Service |
eebd6f |
: ["Error", formatMessage(messages.oupsTitle)];
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
return (
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
<main className={s.content}>
|
|
Packit Service |
eebd6f |
{code}
|
|
Packit Service |
eebd6f |
{title}
|
|
Packit Service |
eebd6f |
{code === "404" && (
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
<FormattedMessage defaultMessage="The page you're looking for does not exist or an another error occurred." />
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
)}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
defaultMessage="{goBack}, or head over to the {homePage} to choose a new direction."
|
|
Packit Service |
eebd6f |
values={{
|
|
Packit Service |
eebd6f |
goBack: (
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
<FormattedMessage defaultMessage="Go back" />
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
),
|
|
Packit Service |
eebd6f |
homePage: (
|
|
Packit Service |
eebd6f |
<Link to="/">
|
|
Packit Service |
eebd6f |
<FormattedMessage defaultMessage="home page" />
|
|
Packit Service |
eebd6f |
</Link>
|
|
Packit Service |
eebd6f |
),
|
|
Packit Service |
eebd6f |
}}
|
|
Packit Service |
eebd6f |
/>
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
</main>
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
);
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
}
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
ErrorPage.propTypes = {
|
|
Packit Service |
eebd6f |
error: PropTypes.shape({
|
|
Packit Service |
eebd6f |
status: PropTypes.number,
|
|
Packit Service |
eebd6f |
}),
|
|
Packit Service |
eebd6f |
intl: intlShape.isRequired,
|
|
Packit Service |
eebd6f |
};
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
ErrorPage.defaultProps = {
|
|
Packit Service |
eebd6f |
error: {},
|
|
Packit Service |
eebd6f |
};
|
|
Packit Service |
eebd6f |
|
|
Packit Service |
eebd6f |
export default injectIntl(ErrorPage);
|