1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-28 05:03:59 +03:00

prototype how we could store ll members

This commit is contained in:
Bruno Windels
2018-07-18 17:10:23 +02:00
parent ca3981fba8
commit d366ec9c48
5 changed files with 96 additions and 8 deletions

View File

@@ -757,6 +757,20 @@ MatrixClient.prototype.getRoom = function(roomId) {
return this.store.getRoom(roomId);
};
MatrixClient.prototype._loadMembers = async function(room) {
const roomId = room.roomId;
let rawMembersEvents = await this.store.getOutOfBandMembers(roomId);
if (rawMembersEvents.length == 0) {
const lastEventId = room.getLastEventId();
const response = await this.members(roomId, "join", "leave", lastEventId);
rawMembersEvents = response.chunk;
// TODO don't block on writing
await this.store.setOutOfBandMembers(roomId, rawMembersEvents);
}
const memberEvents = rawMembersEvents.map(this.getEventMapper());
return memberEvents;
};
/**
* Preloads the member list for the given room id,
* in case lazy loading of memberships is in use.
@@ -767,13 +781,8 @@ MatrixClient.prototype.loadRoomMembersIfNeeded = async function(roomId) {
if (!room || !room.needsOutOfBandMembers()) {
return;
}
const lastEventId = room.getLastEventId();
const responsePromise = this.members(roomId, "join", "leave", lastEventId);
const eventsPromise = responsePromise.then((response) => {
return response.chunk.map(this.getEventMapper());
});
await room.loadOutOfBandMembers(eventsPromise);
const membersPromise = this._loadMembers(room);
await room.loadOutOfBandMembers(membersPromise);
};
/**