diff --git a/lib/sync.js b/lib/sync.js index e944145cb..1ba77e6cc 100644 --- a/lib/sync.js +++ b/lib/sync.js @@ -216,10 +216,6 @@ SyncApi.prototype.peek = function(roomId) { response.messages.chunk, client.getEventMapper() ); - if (response.messages.start) { - peekRoom.oldState.paginationToken = response.messages.start; - } - // set the state of the room to as it was after the timeline executes peekRoom.oldState.setStateEvents(oldStateEvents); peekRoom.currentState.setStateEvents(stateEvents); @@ -230,6 +226,12 @@ SyncApi.prototype.peek = function(roomId) { // roll backwards to diverge old state: peekRoom.addEventsToTimeline(messages.reverse(), true); + // set the pagination token. Make sure this happens after adding + // events to the timeline, otherwise it will get reset. + if (response.messages.start) { + peekRoom.oldState.paginationToken = response.messages.start; + } + client.store.storeRoom(peekRoom); client.emit("Room", peekRoom);