store last pagination token

This commit is contained in:
Bruno Windels 2020-08-19 16:29:08 +02:00
parent d08297d1e0
commit f84c9d51b4
2 changed files with 12 additions and 2 deletions

View file

@ -99,7 +99,7 @@ export class Room extends EventEmitter {
} else { } else {
let members; let members;
if (!this._summary.hasFetchedMembers) { if (!this._summary.hasFetchedMembers) {
const paginationToken = throw new Error("not implemented"); const paginationToken = this._summary.lastPaginationToken;
// TODO: move all of this out of Room // TODO: move all of this out of Room
// if any members are changed by sync while we're fetching members, // if any members are changed by sync while we're fetching members,

View file

@ -27,7 +27,12 @@ function applySyncResponse(data, roomResponse, membership) {
data = roomResponse.state.events.reduce(processEvent, data); data = roomResponse.state.events.reduce(processEvent, data);
} }
if (roomResponse.timeline) { if (roomResponse.timeline) {
data = roomResponse.timeline.events.reduce(processEvent, data); const {timeline} = roomResponse;
if (timeline.prev_batch) {
data = data.cloneIfNeeded();
data.lastPaginationToken = timeline.prev_batch;
}
data = timeline.events.reduce(processEvent, data);
} }
return data; return data;
@ -99,6 +104,7 @@ class SummaryData {
this.canonicalAlias = copy ? copy.canonicalAlias : null; this.canonicalAlias = copy ? copy.canonicalAlias : null;
this.altAliases = copy ? copy.altAliases : null; this.altAliases = copy ? copy.altAliases : null;
this.hasFetchedMembers = copy ? copy.hasFetchedMembers : false; this.hasFetchedMembers = copy ? copy.hasFetchedMembers : false;
this.lastPaginationToken = copy ? copy.lastPaginationToken : null;
this.cloned = copy ? true : false; this.cloned = copy ? true : false;
} }
@ -153,6 +159,10 @@ export class RoomSummary {
return this._data.hasFetchedMembers; return this._data.hasFetchedMembers;
} }
get lastPaginationToken() {
return this._data.lastPaginationToken;
}
writeHasFetchedMembers(value, txn) { writeHasFetchedMembers(value, txn) {
const data = new SummaryData(this._data); const data = new SummaryData(this._data);
data.hasFetchedMembers = value; data.hasFetchedMembers = value;