forked from fedi/mastodon
Fix direct messages column not loading more items on scroll (#9102)
Fix #9097
This commit is contained in:
parent
a2e3401e48
commit
768b0f132d
|
@ -9,14 +9,14 @@ import { debounce } from 'lodash';
|
||||||
export default class ConversationsList extends ImmutablePureComponent {
|
export default class ConversationsList extends ImmutablePureComponent {
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
conversationIds: ImmutablePropTypes.list.isRequired,
|
conversations: ImmutablePropTypes.list.isRequired,
|
||||||
hasMore: PropTypes.bool,
|
hasMore: PropTypes.bool,
|
||||||
isLoading: PropTypes.bool,
|
isLoading: PropTypes.bool,
|
||||||
onLoadMore: PropTypes.func,
|
onLoadMore: PropTypes.func,
|
||||||
shouldUpdateScroll: PropTypes.func,
|
shouldUpdateScroll: PropTypes.func,
|
||||||
};
|
};
|
||||||
|
|
||||||
getCurrentIndex = id => this.props.conversationIds.indexOf(id)
|
getCurrentIndex = id => this.props.conversations.findIndex(x => x.get('id') === id)
|
||||||
|
|
||||||
handleMoveUp = id => {
|
handleMoveUp = id => {
|
||||||
const elementIndex = this.getCurrentIndex(id) - 1;
|
const elementIndex = this.getCurrentIndex(id) - 1;
|
||||||
|
@ -41,22 +41,22 @@ export default class ConversationsList extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
handleLoadOlder = debounce(() => {
|
handleLoadOlder = debounce(() => {
|
||||||
const last = this.props.conversationIds.last();
|
const last = this.props.conversations.last();
|
||||||
|
|
||||||
if (last) {
|
if (last && last.get('last_status')) {
|
||||||
this.props.onLoadMore(last);
|
this.props.onLoadMore(last.get('last_status'));
|
||||||
}
|
}
|
||||||
}, 300, { leading: true })
|
}, 300, { leading: true })
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { conversationIds, onLoadMore, ...other } = this.props;
|
const { conversations, onLoadMore, ...other } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ScrollableList {...other} onLoadMore={onLoadMore && this.handleLoadOlder} scrollKey='direct' ref={this.setRef}>
|
<ScrollableList {...other} onLoadMore={onLoadMore && this.handleLoadOlder} scrollKey='direct' ref={this.setRef}>
|
||||||
{conversationIds.map(item => (
|
{conversations.map(item => (
|
||||||
<ConversationContainer
|
<ConversationContainer
|
||||||
key={item}
|
key={item.get('id')}
|
||||||
conversationId={item}
|
conversationId={item.get('id')}
|
||||||
onMoveUp={this.handleMoveUp}
|
onMoveUp={this.handleMoveUp}
|
||||||
onMoveDown={this.handleMoveDown}
|
onMoveDown={this.handleMoveDown}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -3,7 +3,7 @@ import ConversationsList from '../components/conversations_list';
|
||||||
import { expandConversations } from '../../../actions/conversations';
|
import { expandConversations } from '../../../actions/conversations';
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
const mapStateToProps = state => ({
|
||||||
conversationIds: state.getIn(['conversations', 'items']).map(x => x.get('id')),
|
conversations: state.getIn(['conversations', 'items']),
|
||||||
isLoading: state.getIn(['conversations', 'isLoading'], true),
|
isLoading: state.getIn(['conversations', 'isLoading'], true),
|
||||||
hasMore: state.getIn(['conversations', 'hasMore'], false),
|
hasMore: state.getIn(['conversations', 'hasMore'], false),
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue