From dbfe1e4be6fb46c7374275a2465f4386798516cd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 13 Nov 2016 20:42:54 +0100 Subject: Infinite scroll for followers/following lists --- .../components/features/followers/index.jsx | 33 +++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'app/assets/javascripts/components/features/followers') diff --git a/app/assets/javascripts/components/features/followers/index.jsx b/app/assets/javascripts/components/features/followers/index.jsx index ff3f97b09..13eed69ca 100644 --- a/app/assets/javascripts/components/features/followers/index.jsx +++ b/app/assets/javascripts/components/features/followers/index.jsx @@ -1,13 +1,16 @@ -import { connect } from 'react-redux'; -import PureRenderMixin from 'react-addons-pure-render-mixin'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import LoadingIndicator from '../../components/loading_indicator'; -import { fetchFollowers } from '../../actions/accounts'; -import { ScrollContainer } from 'react-router-scroll'; -import AccountContainer from './containers/account_container'; +import { connect } from 'react-redux'; +import PureRenderMixin from 'react-addons-pure-render-mixin'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import LoadingIndicator from '../../components/loading_indicator'; +import { + fetchFollowers, + expandFollowers +} from '../../actions/accounts'; +import { ScrollContainer } from 'react-router-scroll'; +import AccountContainer from './containers/account_container'; const mapStateToProps = (state, props) => ({ - accountIds: state.getIn(['user_lists', 'followers', Number(props.params.accountId)]) + accountIds: state.getIn(['user_lists', 'followers', Number(props.params.accountId), 'items']) }); const Followers = React.createClass({ @@ -30,6 +33,14 @@ const Followers = React.createClass({ } }, + handleScroll (e) { + const { scrollTop, scrollHeight, clientHeight } = e.target; + + if (scrollTop === scrollHeight - clientHeight) { + this.props.dispatch(expandFollowers(Number(this.props.params.accountId))); + } + }, + render () { const { accountIds } = this.props; @@ -39,8 +50,10 @@ const Followers = React.createClass({ return ( -
- {accountIds.map(id => )} +
+
+ {accountIds.map(id => )} +
); -- cgit