72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import React from 'react';
 | 
						|
import { connect } from 'react-redux';
 | 
						|
import PropTypes from 'prop-types';
 | 
						|
import StatusListContainer from '../../ui/containers/status_list_container';
 | 
						|
import { expandCommunityTimeline } from '../../../actions/timelines';
 | 
						|
import Column from '../../../components/column';
 | 
						|
import ColumnHeader from '../../../components/column_header';
 | 
						|
import { defineMessages, injectIntl } from 'react-intl';
 | 
						|
import { connectCommunityStream } from '../../../actions/streaming';
 | 
						|
 | 
						|
const messages = defineMessages({
 | 
						|
  title: { id: 'standalone.public_title', defaultMessage: 'A look inside...' },
 | 
						|
});
 | 
						|
 | 
						|
@connect()
 | 
						|
@injectIntl
 | 
						|
export default class CommunityTimeline extends React.PureComponent {
 | 
						|
 | 
						|
  static propTypes = {
 | 
						|
    dispatch: PropTypes.func.isRequired,
 | 
						|
    intl: PropTypes.object.isRequired,
 | 
						|
  };
 | 
						|
 | 
						|
  handleHeaderClick = () => {
 | 
						|
    this.column.scrollTop();
 | 
						|
  }
 | 
						|
 | 
						|
  setRef = c => {
 | 
						|
    this.column = c;
 | 
						|
  }
 | 
						|
 | 
						|
  componentDidMount () {
 | 
						|
    const { dispatch } = this.props;
 | 
						|
 | 
						|
    dispatch(expandCommunityTimeline());
 | 
						|
    this.disconnect = dispatch(connectCommunityStream());
 | 
						|
  }
 | 
						|
 | 
						|
  componentWillUnmount () {
 | 
						|
    if (this.disconnect) {
 | 
						|
      this.disconnect();
 | 
						|
      this.disconnect = null;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  handleLoadMore = maxId => {
 | 
						|
    this.props.dispatch(expandCommunityTimeline({ maxId }));
 | 
						|
  }
 | 
						|
 | 
						|
  render () {
 | 
						|
    const { intl } = this.props;
 | 
						|
 | 
						|
    return (
 | 
						|
      <Column ref={this.setRef}>
 | 
						|
        <ColumnHeader
 | 
						|
          icon='users'
 | 
						|
          title={intl.formatMessage(messages.title)}
 | 
						|
          onClick={this.handleHeaderClick}
 | 
						|
        />
 | 
						|
 | 
						|
        <StatusListContainer
 | 
						|
          timelineId='community'
 | 
						|
          onLoadMore={this.handleLoadMore}
 | 
						|
          scrollKey='standalone_public_timeline'
 | 
						|
          trackScroll={false}
 | 
						|
        />
 | 
						|
      </Column>
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
}
 |