diff --git a/src/client.js b/src/client.js index dc75744f7..2361770ca 100644 --- a/src/client.js +++ b/src/client.js @@ -2022,79 +2022,6 @@ MatrixClient.prototype.scrollback = function(room, limit, callback) { return defer.promise; }; -/** - * Take an EventContext, and back/forward-fill results. - * - * @param {module:models/event-context.EventContext} eventContext context - * object to be updated - * @param {Object} opts - * @param {boolean} opts.backwards true to fill backwards, false to go forwards - * @param {boolean} opts.limit number of events to request - * - * @return {module:client.Promise} Resolves: updated EventContext object - * @return {Error} Rejects: with an error response. - */ -MatrixClient.prototype.paginateEventContext = function(eventContext, opts) { - // TODO: we should implement a backoff (as per scrollback()) to deal more - // nicely with HTTP errors. - opts = opts || {}; - const backwards = opts.backwards || false; - - const token = eventContext.getPaginateToken(backwards); - if (!token) { - // no more results. - return Promise.reject(new Error("No paginate token")); - } - - const dir = backwards ? 'b' : 'f'; - const pendingRequest = eventContext._paginateRequests[dir]; - - if (pendingRequest) { - // already a request in progress - return the existing promise - return pendingRequest; - } - - const path = utils.encodeUri( - "/rooms/$roomId/messages", {$roomId: eventContext.getEvent().getRoomId()}, - ); - const params = { - from: token, - limit: ('limit' in opts) ? opts.limit : 30, - dir: dir, - }; - if (this._clientOpts.filter) { - params.filter = JSON.stringify({lazy_load_members: true}); - } - - const roomId = eventContext.getEvent().getRoomId(); - const promise = this._createMessagesRequest( - roomId, token, opts.limit, dir); - - const self = this; - promise.then(function(res) { - // TODO: no RoomState on EventContext, where should the members go? - let token = res.end; - if (res.chunk.length === 0) { - token = null; - } else { - const matrixEvents = utils.map(res.chunk, self.getEventMapper()); - if (backwards) { - // eventContext expects the events in timeline order, but - // back-pagination returns them in reverse order. - matrixEvents.reverse(); - } - eventContext.addEvents(matrixEvents, backwards); - } - eventContext.setPaginateToken(token, backwards); - return eventContext; - }).finally(function() { - eventContext._paginateRequests[dir] = null; - }); - eventContext._paginateRequests[dir] = promise; - - return promise; -}; - /** * Get an EventTimeline for the given event *