mirror of
https://github.com/element-hq/element-web
synced 2024-11-28 12:28:50 +03:00
Merge branch 'develop' into matthew/roompreview
This commit is contained in:
commit
a0aaae49dd
4 changed files with 20 additions and 23 deletions
|
@ -121,7 +121,7 @@ module.exports = React.createClass({
|
||||||
var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');
|
var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');
|
||||||
var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');
|
var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');
|
||||||
|
|
||||||
var av = this.props.avatarJsx || <BaseAvatar name={name} width={36} height={36} />;
|
var av = this.props.avatarJsx || <BaseAvatar name={this.props.name} width={36} height={36} />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={mainClassName} title={ this.props.title }
|
<div className={mainClassName} title={ this.props.title }
|
||||||
|
|
|
@ -71,8 +71,19 @@ module.exports = React.createClass({
|
||||||
self.setState({
|
self.setState({
|
||||||
members: self.roomMembers()
|
members: self.roomMembers()
|
||||||
});
|
});
|
||||||
|
// Lazy-load the complete user list for inviting new users
|
||||||
|
// TODO: Keep this list bleeding-edge up-to-date. Practically speaking,
|
||||||
|
// it will do for now not being updated as random new users join different
|
||||||
|
// rooms as this list will be reloaded every room swap.
|
||||||
|
var room = MatrixClientPeg.get().getRoom(self.props.roomId);
|
||||||
|
self.userList = MatrixClientPeg.get().getUsers().filter(function(u) {
|
||||||
|
return !room.hasMembershipState(u.userId, "join");
|
||||||
|
});
|
||||||
}, 50);
|
}, 50);
|
||||||
|
|
||||||
|
|
||||||
|
setTimeout
|
||||||
|
|
||||||
// Attach a SINGLE listener for global presence changes then locate the
|
// Attach a SINGLE listener for global presence changes then locate the
|
||||||
// member tile and re-render it. This is more efficient than every tile
|
// member tile and re-render it. This is more efficient than every tile
|
||||||
// evar attaching their own listener.
|
// evar attaching their own listener.
|
||||||
|
@ -296,7 +307,6 @@ module.exports = React.createClass({
|
||||||
// member invite (content.third_party_invite.signed.token)
|
// member invite (content.third_party_invite.signed.token)
|
||||||
var room = MatrixClientPeg.get().getRoom(this.props.roomId);
|
var room = MatrixClientPeg.get().getRoom(this.props.roomId);
|
||||||
var EntityTile = sdk.getComponent("rooms.EntityTile");
|
var EntityTile = sdk.getComponent("rooms.EntityTile");
|
||||||
var BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
|
|
||||||
if (room) {
|
if (room) {
|
||||||
room.currentState.getStateEvents("m.room.third_party_invite").forEach(
|
room.currentState.getStateEvents("m.room.third_party_invite").forEach(
|
||||||
function(e) {
|
function(e) {
|
||||||
|
@ -306,12 +316,9 @@ module.exports = React.createClass({
|
||||||
if (memberEvent) {
|
if (memberEvent) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var avatarJsx = (
|
|
||||||
<BaseAvatar name={e.getContent().display_name} width={36} height={36} />
|
|
||||||
);
|
|
||||||
memberList.push(
|
memberList.push(
|
||||||
<EntityTile key={e.getStateKey()} ref={e.getStateKey()}
|
<EntityTile key={e.getStateKey()} ref={e.getStateKey()}
|
||||||
name={e.getContent().display_name} avatarJsx={avatarJsx} />
|
name={e.getContent().display_name} />
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -327,21 +334,13 @@ module.exports = React.createClass({
|
||||||
<Loader />
|
<Loader />
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// TODO: Cache this calculation
|
|
||||||
var room = MatrixClientPeg.get().getRoom(this.props.roomId);
|
|
||||||
if (!room) return <div></div>;
|
|
||||||
/* var allUsers = MatrixClientPeg.get().getUsers();
|
|
||||||
// only add Users if they are not joined
|
|
||||||
allUsers = allUsers.filter(function(u) {
|
|
||||||
return !room.hasMembershipState(u.userId, "join");
|
|
||||||
}); */
|
|
||||||
var SearchableEntityList = sdk.getComponent("rooms.SearchableEntityList");
|
var SearchableEntityList = sdk.getComponent("rooms.SearchableEntityList");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SearchableEntityList searchPlaceholderText={"Invite / Search"}
|
<SearchableEntityList searchPlaceholderText={"Invite / Search"}
|
||||||
onSubmit={this.onInvite}
|
onSubmit={this.onInvite}
|
||||||
onQueryChanged={this.onSearchQueryChanged}
|
onQueryChanged={this.onSearchQueryChanged}
|
||||||
entities={[] /* Entities.fromUsers(allUsers, true, this.onInvite) */} />
|
entities={Entities.fromUsers(this.userList || [], true, this.onInvite)} />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -79,14 +79,6 @@ module.exports = React.createClass({
|
||||||
var av = (
|
var av = (
|
||||||
<MemberAvatar member={member} width={36} height={36} />
|
<MemberAvatar member={member} width={36} height={36} />
|
||||||
);
|
);
|
||||||
var power;
|
|
||||||
var powerLevel = this.props.member.powerLevel;
|
|
||||||
if (powerLevel >= 50 && powerLevel < 99) {
|
|
||||||
power = <img src="img/mod.svg" className="mx_MemberTile_power" width="16" height="17" alt="Mod"/>;
|
|
||||||
}
|
|
||||||
if (powerLevel >= 99) {
|
|
||||||
power = <img src="img/admin.svg" className="mx_MemberTile_power" width="16" height="17" alt="Admin"/>;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (member.user) {
|
if (member.user) {
|
||||||
this.user_last_modified_time = member.user.getLastModifiedTime();
|
this.user_last_modified_time = member.user.getLastModifiedTime();
|
||||||
|
|
|
@ -50,6 +50,12 @@ var SearchableEntityList = React.createClass({
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
componentWillUnmount: function() {
|
||||||
|
// pretend the query box was blanked out else filters could still be
|
||||||
|
// applied to other components which rely on onQueryChanged.
|
||||||
|
this.props.onQueryChanged("");
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public-facing method to set the input query text to the given input.
|
* Public-facing method to set the input query text to the given input.
|
||||||
* @param {string} input
|
* @param {string} input
|
||||||
|
|
Loading…
Reference in a new issue