You've already forked matrix-js-sdk
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:
@@ -143,6 +143,8 @@ module.exports.MatrixEvent.prototype = {
|
|||||||
/**
|
/**
|
||||||
* Get either 'content' or 'prev_content' depending on if this event is
|
* Get either 'content' or 'prev_content' depending on if this event is
|
||||||
* 'forward-looking' or not. This can be modified via event.forwardLooking.
|
* '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>
|
* <strong>This method is experimental and may change.</strong>
|
||||||
* @return {Object} event.content if this event is forward-looking, else
|
* @return {Object} event.content if this event is forward-looking, else
|
||||||
* event.prev_content.
|
* event.prev_content.
|
||||||
|
|||||||
@@ -203,7 +203,10 @@ RoomMember.prototype.getAvatarUrl =
|
|||||||
};
|
};
|
||||||
|
|
||||||
function calculateDisplayName(member, event, roomState) {
|
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;
|
var selfUserId = member.userId;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -145,6 +145,19 @@ RoomState.prototype.setStateEvents = function(stateEvents) {
|
|||||||
|
|
||||||
if (event.getType() === "m.room.member") {
|
if (event.getType() === "m.room.member") {
|
||||||
var userId = event.getStateKey();
|
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];
|
var member = self.members[userId];
|
||||||
if (!member) {
|
if (!member) {
|
||||||
member = new RoomMember(event.getRoomId(), userId);
|
member = new RoomMember(event.getRoomId(), userId);
|
||||||
|
|||||||
Reference in New Issue
Block a user