bundle_column_error.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { defineMessages, injectIntl } from 'react-intl';
  4. import Column from 'mastodon/components/column';
  5. import ColumnHeader from 'mastodon/components/column_header';
  6. import IconButton from 'mastodon/components/icon_button';
  7. import { Helmet } from 'react-helmet';
  8. const messages = defineMessages({
  9. title: { id: 'bundle_column_error.title', defaultMessage: 'Network error' },
  10. body: { id: 'bundle_column_error.body', defaultMessage: 'Something went wrong while loading this component.' },
  11. retry: { id: 'bundle_column_error.retry', defaultMessage: 'Try again' },
  12. });
  13. class BundleColumnError extends React.PureComponent {
  14. static propTypes = {
  15. onRetry: PropTypes.func.isRequired,
  16. intl: PropTypes.object.isRequired,
  17. multiColumn: PropTypes.bool,
  18. }
  19. handleRetry = () => {
  20. this.props.onRetry();
  21. }
  22. render () {
  23. const { multiColumn, intl: { formatMessage } } = this.props;
  24. return (
  25. <Column bindToDocument={!multiColumn} label={formatMessage(messages.title)}>
  26. <ColumnHeader
  27. icon='exclamation-circle'
  28. title={formatMessage(messages.title)}
  29. showBackButton
  30. multiColumn={multiColumn}
  31. />
  32. <div className='error-column'>
  33. <IconButton title={formatMessage(messages.retry)} icon='refresh' onClick={this.handleRetry} size={64} />
  34. {formatMessage(messages.body)}
  35. </div>
  36. <Helmet>
  37. <meta name='robots' content='noindex' />
  38. </Helmet>
  39. </Column>
  40. );
  41. }
  42. }
  43. export default injectIntl(BundleColumnError);