From d0560f594dfb17fb646cb1c1bc030fbf356db214 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Wed, 16 Mar 2016 17:18:33 +0000 Subject: [PATCH] Set the right .sender value for m.room.member events --- lib/models/event-timeline.js | 7 ++++++- spec/integ/matrix-client-room-timeline.spec.js | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/models/event-timeline.js b/lib/models/event-timeline.js index cb2cc60b5..673e32e92 100644 --- a/lib/models/event-timeline.js +++ b/lib/models/event-timeline.js @@ -227,7 +227,12 @@ EventTimeline.prototype.addEvent = function(event, atStart, spliceBeforeLocalEch // it again if the prop wasn't previously set. It may also mean that // the sender/target is updated (if the event set was a room member event) // so we want to use the *updated* member (new avatar/name) instead. - if (!event.sender || event.getType() === "m.room.member") { + // + // However, we do NOT want to do this on member events if we're going + // back in time, else we'll set the .sender value for BEFORE the given + // member event, whereas we want to set the .sender value for the ACTUAL + // member event itself. + if (!event.sender || (event.getType() === "m.room.member" && !atStart)) { setEventMetadata(event, stateContext, atStart); } } diff --git a/spec/integ/matrix-client-room-timeline.spec.js b/spec/integ/matrix-client-room-timeline.spec.js index 062437578..8d5125f0c 100644 --- a/spec/integ/matrix-client-room-timeline.spec.js +++ b/spec/integ/matrix-client-room-timeline.spec.js @@ -288,7 +288,7 @@ describe("MatrixClient room timelines", function() { oldMshipEvent, utils.mkMessage({ user: userId, room: roomId, msg: "I'm old alice" - }), + }), joinMshipEvent, ]; @@ -300,7 +300,7 @@ describe("MatrixClient room timelines", function() { client.scrollback(room).done(function() { expect(room.timeline.length).toEqual(5); - var joinMsg = room.timeline[0]; + var joinMsg = room.timeline[0]; expect(joinMsg.sender.name).toEqual("Old Alice"); var oldMsg = room.timeline[1]; expect(oldMsg.sender.name).toEqual("Old Alice");