Use EntityTile for 3PID entities rather than munging MemberTile
parent
c758c0f84f
commit
165adde0c8
|
@ -285,6 +285,8 @@ module.exports = React.createClass({
|
||||||
// we shouldn't add them if the 3pid invite state key (token) is in the
|
// we shouldn't add them if the 3pid invite state key (token) is in the
|
||||||
// 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 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) {
|
||||||
|
@ -294,9 +296,12 @@ 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(
|
||||||
<MemberTile key={e.getStateKey()} ref={e.getStateKey()}
|
<EntityTile key={e.getStateKey()} ref={e.getStateKey()}
|
||||||
customDisplayName={e.getContent().display_name} />
|
name={e.getContent().display_name} avatarJsx={avatarJsx} />
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,8 +27,7 @@ module.exports = React.createClass({
|
||||||
displayName: 'MemberTile',
|
displayName: 'MemberTile',
|
||||||
|
|
||||||
propTypes: {
|
propTypes: {
|
||||||
member: React.PropTypes.any, // RoomMember
|
member: React.PropTypes.any.isRequired, // RoomMember
|
||||||
customDisplayName: React.PropTypes.string, // for 3pid invites
|
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
|
@ -36,7 +35,6 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
shouldComponentUpdate: function(nextProps, nextState) {
|
shouldComponentUpdate: function(nextProps, nextState) {
|
||||||
if (!this.props.member) { return false; } // e.g. 3pid members
|
|
||||||
if (
|
if (
|
||||||
this.member_last_modified_time === undefined ||
|
this.member_last_modified_time === undefined ||
|
||||||
this.member_last_modified_time < nextProps.member.getLastModifiedTime()
|
this.member_last_modified_time < nextProps.member.getLastModifiedTime()
|
||||||
|
@ -54,8 +52,6 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
onClick: function(e) {
|
onClick: function(e) {
|
||||||
if (!this.props.member) { return; } // e.g. 3pid members
|
|
||||||
|
|
||||||
dis.dispatch({
|
dis.dispatch({
|
||||||
action: 'view_user',
|
action: 'view_user',
|
||||||
member: this.props.member,
|
member: this.props.member,
|
||||||
|
@ -63,21 +59,11 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
_getDisplayName: function() {
|
_getDisplayName: function() {
|
||||||
if (this.props.customDisplayName) {
|
|
||||||
return this.props.customDisplayName;
|
|
||||||
}
|
|
||||||
return this.props.member.name;
|
return this.props.member.name;
|
||||||
},
|
},
|
||||||
|
|
||||||
getPowerLabel: function() {
|
getPowerLabel: function() {
|
||||||
if (!this.props.member) {
|
return this.props.member.userId;
|
||||||
return this._getDisplayName();
|
|
||||||
}
|
|
||||||
var label = this.props.member.userId;
|
|
||||||
if (this.state.isTargetMod) {
|
|
||||||
label += " - Mod (" + this.props.member.powerLevelNorm + "%)";
|
|
||||||
}
|
|
||||||
return label;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
|
@ -88,29 +74,21 @@ module.exports = React.createClass({
|
||||||
var member = this.props.member;
|
var member = this.props.member;
|
||||||
var name = this._getDisplayName();
|
var name = this._getDisplayName();
|
||||||
var active = -1;
|
var active = -1;
|
||||||
var presenceState = (member && member.user) ? member.user.presence : null;
|
var presenceState = member.user ? member.user.presence : null;
|
||||||
|
|
||||||
var av;
|
var av = (
|
||||||
if (member) {
|
<MemberAvatar member={member} width={36} height={36} />
|
||||||
av = (
|
);
|
||||||
<MemberAvatar member={member} width={36} height={36} />
|
|
||||||
);
|
|
||||||
|
|
||||||
if (member.user) {
|
if (member.user) {
|
||||||
this.user_last_modified_time = member.user.getLastModifiedTime();
|
this.user_last_modified_time = member.user.getLastModifiedTime();
|
||||||
|
|
||||||
// FIXME: make presence data update whenever User.presence changes...
|
// FIXME: make presence data update whenever User.presence changes...
|
||||||
active = (
|
active = (
|
||||||
(Date.now() - (member.user.lastPresenceTs - member.user.lastActiveAgo)) || -1
|
(Date.now() - (member.user.lastPresenceTs - member.user.lastActiveAgo)) || -1
|
||||||
);
|
|
||||||
}
|
|
||||||
this.member_last_modified_time = member.getLastModifiedTime();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
av = (
|
|
||||||
<BaseAvatar name={name} width={36} height={36} />
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
this.member_last_modified_time = member.getLastModifiedTime();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<EntityTile {...this.props} presenceActiveAgo={active} presenceState={presenceState}
|
<EntityTile {...this.props} presenceActiveAgo={active} presenceState={presenceState}
|
||||||
|
|
Loading…
Reference in New Issue