Blame pages/error/index.js

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);