make users available in member by requesting them from client right before

before this was already foreseen, but memberDict wasn't being refreshed
as it's only used in roomMembers(), I got rid of memberDict as well
pull/21833/head
Bruno Windels 2018-09-07 23:44:20 +02:00
parent 7fe822ca17
commit 0cd222ef0b
1 changed files with 6 additions and 10 deletions

View File

@ -32,7 +32,6 @@ module.exports = React.createClass({
displayName: 'MemberList', displayName: 'MemberList',
getInitialState: function() { getInitialState: function() {
this.memberDict = this.getMemberDict();
this._mounted = false; this._mounted = false;
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
@ -196,8 +195,6 @@ module.exports = React.createClass({
_updateList: new rate_limited_func(function() { _updateList: new rate_limited_func(function() {
// console.log("Updating memberlist"); // console.log("Updating memberlist");
this.memberDict = this.getMemberDict();
const newState = { const newState = {
members: this.roomMembers(), members: this.roomMembers(),
}; };
@ -206,15 +203,15 @@ module.exports = React.createClass({
this.setState(newState); this.setState(newState);
}, 500), }, 500),
getMemberDict: function() { getMembersWithUser: function() {
if (!this.props.roomId) return {}; if (!this.props.roomId) return [];
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.props.roomId); const room = cli.getRoom(this.props.roomId);
if (!room) return {}; if (!room) return {};
const all_members = room.currentState.members; const allMembers = Object.values(room.currentState.members);
Object.values(all_members).forEach(function(member) { allMembers.forEach(function(member) {
// work around a race where you might have a room member object // work around a race where you might have a room member object
// before the user object exists. This may or may not cause // before the user object exists. This may or may not cause
// https://github.com/vector-im/vector-web/issues/186 // https://github.com/vector-im/vector-web/issues/186
@ -226,14 +223,13 @@ module.exports = React.createClass({
// the right solution here is to fix the race rather than leave it as 0 // the right solution here is to fix the race rather than leave it as 0
}); });
return all_members; return allMembers;
}, },
roomMembers: function() { roomMembers: function() {
const ConferenceHandler = CallHandler.getConferenceHandler(); const ConferenceHandler = CallHandler.getConferenceHandler();
const allMembersDict = this.memberDict || {}; const allMembers = this.getMembersWithUser();
const allMembers = Object.values(allMembersDict);
const filteredAndSortedMembers = allMembers.filter((m) => { const filteredAndSortedMembers = allMembers.filter((m) => {
return ( return (
m.membership === 'join' || m.membership === 'invite' m.membership === 'join' || m.membership === 'invite'