header.js (2771B)
- import React from 'react';
- import ImmutablePropTypes from 'react-immutable-proptypes';
- import PropTypes from 'prop-types';
- import InnerHeader from '../../account/components/header';
- import ActionBar from '../../account/components/action_bar';
- import MissingIndicator from '../../../components/missing_indicator';
- import ImmutablePureComponent from 'react-immutable-pure-component';
- import MovedNote from './moved_note';
- import { FormattedMessage } from 'react-intl';
- import { NavLink } from 'react-router-dom';
- export default class Header extends ImmutablePureComponent {
- static propTypes = {
- account: ImmutablePropTypes.map,
- onFollow: PropTypes.func.isRequired,
- onBlock: PropTypes.func.isRequired,
- onMention: PropTypes.func.isRequired,
- onDirect: PropTypes.func.isRequired,
- onReblogToggle: PropTypes.func.isRequired,
- onMute: PropTypes.func.isRequired,
- hideTabs: PropTypes.bool,
- };
- static contextTypes = {
- router: PropTypes.object,
- };
- handleFollow = () => {
- this.props.onFollow(this.props.account);
- }
- handleBlock = () => {
- this.props.onBlock(this.props.account);
- }
- handleMention = () => {
- this.props.onMention(this.props.account, this.context.router.history);
- }
- handleDirect = () => {
- this.props.onDirect(this.props.account, this.context.router.history);
- }
- handleReblogToggle = () => {
- this.props.onReblogToggle(this.props.account);
- }
- handleMute = () => {
- this.props.onMute(this.props.account);
- }
- render () {
- const { account, hideTabs } = this.props;
- if (account === null) {
- return <MissingIndicator />;
- }
- return (
- <div className='account-timeline__header'>
- {account.get('moved') && <MovedNote from={account} to={account.get('moved')} />}
- <InnerHeader
- account={account}
- onFollow={this.handleFollow}
- onBlock={this.handleBlock}
- />
- <ActionBar
- account={account}
- onBlock={this.handleBlock}
- onMention={this.handleMention}
- onDirect={this.handleDirect}
- onReblogToggle={this.handleReblogToggle}
- onMute={this.handleMute}
- />
- {!hideTabs && (
- <div className='account__section-headline'>
- <NavLink exact to={`/accounts/${account.get('id')}`}><FormattedMessage id='account.posts' defaultMessage='Toots' /></NavLink>
- <NavLink exact to={`/accounts/${account.get('id')}/with_replies`}><FormattedMessage id='account.posts_with_replies' defaultMessage='Toots and replies' /></NavLink>
- <NavLink exact to={`/accounts/${account.get('id')}/media`}><FormattedMessage id='account.media' defaultMessage='Media' /></NavLink>
- </div>
- )}
- </div>
- );
- }
- }