diff --git a/components/chat.js b/components/chat.js index bba3978..4068dfd 100644 --- a/components/chat.js +++ b/components/chat.js @@ -67,7 +67,8 @@ let chat = create({ getInitialState: function() { return { - ref: null + ref: null, + loading: false } }, @@ -98,6 +99,14 @@ let chat = create({ this.setState({replyEvent: e}) }, + paginateBackwards: function() { + let client = this.props.client + client.paginateEventTimeline(client.getRoom(this.props.roomId).getLiveTimeline(), {backwards: true}).then(() => { + this.setState({loading: false}) + }) + this.setState({loading: true}) + }, + render: function() { let client = this.props.client let empty = ( @@ -124,9 +133,14 @@ let chat = create({ // if the sender is the same, add it to the 'current' messageGroup, if not, // push the old one to 'groups' and start with a new array. + let liveTimeline = room.getLiveTimeline() + let liveTimelineEvents = liveTimeline.getEvents() + + // fetch more backlog if we don't have enough events + let events = [] - if (room.timeline.length > 0) { - room.getLiveTimeline().getEvents().forEach((MatrixEvent) => { + if (liveTimelineEvents.length > 0) { + liveTimelineEvents.forEach((MatrixEvent) => { let event = MatrixEvent.event; event = Object.assign(event, eventFunctions) if (event.sender == null) { // localecho messages @@ -155,10 +169,12 @@ let chat = create({
- + {this.state.loading && +
+ LOADING +
} {events}