diff --git a/src/Entities.js b/src/Entities.js index 712f7b4dde..47103bfb65 100644 --- a/src/Entities.js +++ b/src/Entities.js @@ -55,10 +55,23 @@ class MemberEntity extends Entity { class UserEntity extends Entity { + constructor(model, showInviteButton, inviteFn) { + super(model); + this.showInviteButton = Boolean(showInviteButton); + this.inviteFn = inviteFn; + } + + onClick() { + if (this.inviteFn) { + this.inviteFn(this.model.userId); + } + } + getJsx() { var UserTile = sdk.getComponent("rooms.UserTile"); return ( - + ); } @@ -82,11 +95,13 @@ module.exports = { /** * @param {User[]} users + * @param {boolean} showInviteButton + * @param {Function} inviteFn Called with the user ID. * @return {Entity[]} */ - fromUsers: function(users) { + fromUsers: function(users, showInviteButton, inviteFn) { return users.map(function(u) { - return new UserEntity(u); + return new UserEntity(u, showInviteButton, inviteFn); }) } }; diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js index b775860461..ff76e64c56 100644 --- a/src/components/views/rooms/MemberList.js +++ b/src/components/views/rooms/MemberList.js @@ -320,11 +320,10 @@ module.exports = React.createClass({ // TODO: Cache this calculation var room = MatrixClientPeg.get().getRoom(this.props.roomId); var allUsers = MatrixClientPeg.get().getUsers(); - // only add Users if they don't exist in the member list + // only add Users if they are not joined allUsers = allUsers.filter(function(u) { - return room.getMember(u.userId) === null; + return !room.hasMembershipState(u.userId, "join"); }); - var SearchableEntityList = sdk.getComponent("rooms.SearchableEntityList"); return ( @@ -332,9 +331,9 @@ module.exports = React.createClass({ onSubmit={this.onInvite} entities={ Entities.fromRoomMembers( - room.currentState.getMembers() // ALLLLL OF THEM + room.getJoinedMembers() ).concat( - Entities.fromUsers(allUsers) + Entities.fromUsers(allUsers, true, this.onInvite) ) } /> );