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.

39 lines
1.1 KiB

  1. import Status from './status';
  2. import ImmutablePropTypes from 'react-immutable-proptypes';
  3. import PureRenderMixin from 'react-addons-pure-render-mixin';
  4. const StatusList = React.createClass({
  5. propTypes: {
  6. statuses: ImmutablePropTypes.list.isRequired,
  7. onReply: React.PropTypes.func,
  8. onReblog: React.PropTypes.func,
  9. onFavourite: React.PropTypes.func,
  10. onScrollToBottom: React.PropTypes.func
  11. },
  12. mixins: [PureRenderMixin],
  13. handleScroll (e) {
  14. const { scrollTop, scrollHeight, clientHeight } = e.target;
  15. if (scrollTop === scrollHeight - clientHeight) {
  16. this.props.onScrollToBottom();
  17. }
  18. },
  19. render () {
  20. return (
  21. <div style={{ overflowY: 'scroll', flex: '1 1 auto' }} className='scrollable' onScroll={this.handleScroll}>
  22. <div>
  23. {this.props.statuses.map((status) => {
  24. return <Status key={status.get('id')} status={status} onReply={this.props.onReply} onReblog={this.props.onReblog} onFavourite={this.props.onFavourite} />;
  25. })}
  26. </div>
  27. </div>
  28. );
  29. }
  30. });
  31. export default StatusList;