You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
3.4 KiB

  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import Column from 'flavours/glitch/features/ui/components/column';
  4. import ColumnBackButtonSlim from 'flavours/glitch/components/column_back_button_slim';
  5. import { defineMessages, injectIntl } from 'react-intl';
  6. import ImmutablePureComponent from 'react-immutable-pure-component';
  7. import ColumnLink from 'flavours/glitch/features/ui/components/column_link';
  8. import ColumnSubheading from 'flavours/glitch/features/ui/components/column_subheading';
  9. import { openModal } from 'flavours/glitch/actions/modal';
  10. import { connect } from 'react-redux';
  11. const messages = defineMessages({
  12. heading: { id: 'column.heading', defaultMessage: 'Misc' },
  13. subheading: { id: 'column.subheading', defaultMessage: 'Miscellaneous options' },
  14. favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },
  15. blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },
  16. domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' },
  17. mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
  18. show_me_around: { id: 'getting_started.onboarding', defaultMessage: 'Show me around' },
  19. pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' },
  20. keyboard_shortcuts: { id: 'navigation_bar.keyboard_shortcuts', defaultMessage: 'Keyboard shortcuts' },
  21. featured_users: { id: 'navigation_bar.featured_users', defaultMessage: 'Featured users' },
  22. });
  23. export default @connect()
  24. @injectIntl
  25. class gettingStartedMisc extends ImmutablePureComponent {
  26. static contextTypes = {
  27. router: PropTypes.object.isRequired,
  28. identity: PropTypes.object,
  29. };
  30. static propTypes = {
  31. intl: PropTypes.object.isRequired,
  32. dispatch: PropTypes.func.isRequired,
  33. };
  34. openOnboardingModal = (e) => {
  35. this.props.dispatch(openModal('ONBOARDING'));
  36. };
  37. openFeaturedAccountsModal = (e) => {
  38. this.props.dispatch(openModal('PINNED_ACCOUNTS_EDITOR'));
  39. };
  40. render () {
  41. const { intl } = this.props;
  42. const { signedIn } = this.context.identity;
  43. return (
  44. <Column icon='ellipsis-h' heading={intl.formatMessage(messages.heading)}>
  45. <ColumnBackButtonSlim />
  46. <div className='scrollable'>
  47. <ColumnSubheading text={intl.formatMessage(messages.subheading)} />
  48. {signedIn && (<ColumnLink key='favourites' icon='star' text={intl.formatMessage(messages.favourites)} to='/favourites' />)}
  49. {signedIn && (<ColumnLink key='pinned' icon='thumb-tack' text={intl.formatMessage(messages.pins)} to='/pinned' />)}
  50. {signedIn && (<ColumnLink key='featured_users' icon='users' text={intl.formatMessage(messages.featured_users)} onClick={this.openFeaturedAccountsModal} />)}
  51. {signedIn && (<ColumnLink key='mutes' icon='volume-off' text={intl.formatMessage(messages.mutes)} to='/mutes' />)}
  52. {signedIn && (<ColumnLink key='blocks' icon='ban' text={intl.formatMessage(messages.blocks)} to='/blocks' />)}
  53. {signedIn && (<ColumnLink key='domain_blocks' icon='minus-circle' text={intl.formatMessage(messages.domain_blocks)} to='/domain_blocks' />)}
  54. <ColumnLink key='shortcuts' icon='question' text={intl.formatMessage(messages.keyboard_shortcuts)} to='/keyboard-shortcuts' />
  55. {signedIn && (<ColumnLink key='onboarding' icon='hand-o-right' text={intl.formatMessage(messages.show_me_around)} onClick={this.openOnboardingModal} />)}
  56. </div>
  57. </Column>
  58. );
  59. }
  60. }