Fix the missing date separator at the start of rooms

When we first hit the start of the room, we still have a pagination token, so
we hide the date separator. When we try to backpaginate again, we get an empty
result, and the pagination token is cleared.

Make sure that we update state. canBackPaginate even when there are no new
results, to handle this case.

Fixes https://github.com/vector-im/vector-web/issues/1014
This commit is contained in:
Richard van der Hoff 2016-03-10 13:39:19 +00:00
parent ec2e27a754
commit 3bd33d0985

View file

@ -188,7 +188,7 @@ var TimelinePanel = React.createClass({
debuglog("TimelinePanel: paginate complete backwards:"+backwards+"; success:"+r); debuglog("TimelinePanel: paginate complete backwards:"+backwards+"; success:"+r);
this.setState({[statekey]: false}); this.setState({[statekey]: false});
this._onTimelineUpdated(r); this._onTimelineUpdated();
return r; return r;
}); });
}, },
@ -555,7 +555,7 @@ var TimelinePanel = React.createClass({
// calling _onTimelineUpdated and updating the state. // calling _onTimelineUpdated and updating the state.
var onLoaded = () => { var onLoaded = () => {
this._onTimelineUpdated(true); this._onTimelineUpdated();
this.setState({timelineLoading: false}, () => { this.setState({timelineLoading: false}, () => {
// initialise the scroll state of the message panel // initialise the scroll state of the message panel
@ -586,17 +586,15 @@ var TimelinePanel = React.createClass({
prom.done(); prom.done();
}, },
_onTimelineUpdated: function(gotResults) { _onTimelineUpdated: function() {
// we might have switched rooms since the load started - just bin // we might have switched rooms since the load started - just bin
// the results if so. // the results if so.
if (this.unmounted) return; if (this.unmounted) return;
if (gotResults) {
this.setState({ this.setState({
events: this._timelineWindow.getEvents(), events: this._timelineWindow.getEvents(),
canBackPaginate: this._timelineWindow.canPaginate(EventTimeline.BACKWARDS), canBackPaginate: this._timelineWindow.canPaginate(EventTimeline.BACKWARDS),
}); });
}
}, },
_indexForEventId: function(evId) { _indexForEventId: function(evId) {