1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-26 17:03:12 +03:00

make sure we show display names & avatars on parts, and use the right type of content for displaynames for member events in general. fixes https://github.com/vector-im/vector-web/issues/1140 and https://github.com/vector-im/vector-web/issues/873 and a bunch more

This commit is contained in:
Matthew Hodgson
2016-03-16 13:51:55 +00:00
parent 95494933fd
commit 98b0cf2560
3 changed files with 19 additions and 1 deletions

View File

@@ -143,6 +143,8 @@ module.exports.MatrixEvent.prototype = {
/**
* Get either 'content' or 'prev_content' depending on if this event is
* 'forward-looking' or not. This can be modified via event.forwardLooking.
* In practice, this means we get the chronologically earlier content value
* for this event (this method should surely be called getEarlierContent)
* <strong>This method is experimental and may change.</strong>
* @return {Object} event.content if this event is forward-looking, else
* event.prev_content.

View File

@@ -203,7 +203,10 @@ RoomMember.prototype.getAvatarUrl =
};
function calculateDisplayName(member, event, roomState) {
var displayName = event.getDirectionalContent().displayname;
// N.B. getContent() not getDirectionalContent() at this point
// as we don't care about the chronologically earlier content
// but its current content!
var displayName = event.getContent().displayname;
var selfUserId = member.userId;
/*

View File

@@ -145,6 +145,19 @@ RoomState.prototype.setStateEvents = function(stateEvents) {
if (event.getType() === "m.room.member") {
var userId = event.getStateKey();
// leave events apparently elide the displayname or avatar_url,
// so let's fake one up so that we don't leak user ids
// into the timeline
if (event.getContent().membership === "leave" ||
event.getContent().membership === "ban")
{
event.getContent().avatar_url =
event.getPrevContent().avatar_url;
event.getContent().displayname =
event.getPrevContent().displayname;
}
var member = self.members[userId];
if (!member) {
member = new RoomMember(event.getRoomId(), userId);