Rejig display names when paginating to lie less.

This commit is contained in:
Kegan Dougal 2014-11-04 10:18:46 +00:00
parent 43e7ad1b1c
commit 1c86ec5b8d
3 changed files with 24 additions and 13 deletions

View file

@ -218,14 +218,19 @@ function(matrixService, $rootScope, $q, $timeout, mPresence, notificationService
else if (!isLiveEvent) {
// mutate the old room state
var oldEvent = angular.copy(event);
oldEvent.cnt = event.content;
if (event.prev_content) {
// the m.room.member event we are handling is the NEW event. When
// we keep going back in time, we want the PREVIOUS value for displaying
// names/etc, hence the clobber here.
// FIXME TODO: We can't be doing this, we should have separate keys for
// avatar_url and displayname.
event.content = event.prev_content;
oldEvent.cnt = event.prev_content;
}
if (event.changedKey === "membership" && event.content.membership === "join") {
// join has a prev_content but it doesn't contain all the info unlike the join, so use that.
oldEvent.cnt = event.content;
}
room.old_room_state.storeStateEvent(oldEvent);
}

View file

@ -45,12 +45,17 @@ angular.module('modelService', [])
addMessageEvent: function addMessageEvent(event, toFront) {
// every message must reference the RoomMember which made it *at
// that time* so things like display names display correctly.
var stateAtTheTime = toFront ? this.old_room_state : this.current_room_state;
event.room_member = stateAtTheTime.getStateEvent("m.room.member", event.user_id);
if (event.type === "m.room.member" && event.content.membership === "invite") {
// give information on both the inviter and invitee
event.__target_room_member = stateAtTheTime.getStateEvent("m.room.member", event.state_key);
}
if (toFront) {
event.room_member = this.old_room_state.getStateEvent("m.room.member", event.user_id);
this.events.unshift(event);
}
else {
event.room_member = this.current_room_state.getStateEvent("m.room.member", event.user_id);
this.events.push(event);
}
},