diff --git a/src/models/room-state.js b/src/models/room-state.js index fb049daa9..bb8e93fb9 100644 --- a/src/models/room-state.js +++ b/src/models/room-state.js @@ -443,6 +443,22 @@ RoomState.prototype.markOutOfBandMembersFailed = function() { this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED; }; +/** + * Clears the loaded out-of-band members + */ +RoomState.prototype.clearOutOfBandMembers = function() { + let count = 0; + Object.keys(this.members).forEach((userId) => { + const member = this.members[userId]; + if (member.isOutOfBand()) { + ++count; + delete this.members[userId]; + } + }); + console.log(`LL: RoomState removed ${count} members...`); + this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED; +}; + /** * Sets the loaded out-of-band members. * @param {MatrixEvent[]} stateEvents array of membership state events diff --git a/src/models/room.js b/src/models/room.js index 2d253d64e..552806238 100644 --- a/src/models/room.js +++ b/src/models/room.js @@ -465,6 +465,7 @@ Room.prototype.clearLoadedMembersIfNeeded = async function() { await this.loadMembersIfNeeded(); this._membersPromise = null; await this._client.store.clearOutOfBandMembers(this.roomId); + this.currentState.clearOutOfBandMembers(); } };